발효홍삼
코딩하는 홍삼
발효홍삼
전체 방문자
오늘
어제
  • 분류 전체보기 (142)
    • PS (63)
      • 프로그래머스 (9)
      • 코드업 (10)
      • 백준 (43)
      • 알고스팟 (1)
    • Programming Language (11)
      • html_css (2)
      • java (0)
      • c,c++ (2)
      • vanillajs (2)
      • react (0)
      • vue.js (0)
      • angular.js (0)
      • electron (3)
      • 엄랭(Umjunsik-lang) (1)
      • F# (1)
      • Node.js (0)
      • Go (0)
    • knowledge (41)
      • algorithm (3)
      • data structure (1)
      • os (1)
      • ML (1)
      • math (31)
      • paper review (0)
      • IT-license (4)
    • Programming Guide (27)
      • React (1)
      • Electron (2)
      • CSS , SASS ( SCSS ) , Tailw.. (3)
      • Node.js (1)
      • Go (1)
      • Ruby on Rails (2)
      • R (1)
      • PHP (1)
      • Docker (1)
      • JSP (1)
      • C# (1)
      • Django (1)
      • Flask (1)
      • Dart (1)
      • Next.js (1)
      • Vue.js (1)
      • Unity (1)
      • React Native (0)
      • Flutter (3)
      • GraphQL (1)
      • MongoDB (1)
      • .NET (1)
      • RUST (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 출력
  • 자바
  • 기초백제
  • Python
  • 미적분학
  • 기초100제
  • 정보처리기능사
  • 구현
  • electron
  • 수학
  • LV1
  • cpp
  • C
  • CSS
  • java
  • 이산수학
  • 정보처리기능사 필기
  • 알고리즘
  • nodejs
  • 코드업
  • 백준
  • HTML
  • 미분
  • 프로그래머스
  • js
  • JavaScript
  • codeup
  • 적분
  • 파이썬
  • c++

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
발효홍삼

코딩하는 홍삼

[ 백준 ] 2660번 : 회장뽑기 ( C++/C )
PS/백준

[ 백준 ] 2660번 : 회장뽑기 ( C++/C )

2022. 3. 10. 20:14
728x90
  • 문제

https://www.acmicpc.net/problem/2660

 

2660번: 회장뽑기

입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터

www.acmicpc.net


  • 알고리즘 ( 풀이법 )

플로이드-워셜 알고리즘이 무엇인지 몰라 인터넷에서 해설을 보고 풀었다.

각 간선의 가중치는 1이고 최소 비용을 저장한다. 이 중 가장 작은 최소 비용을 가진 회원들을 골라 출력한다.

 

학기 중이고 시험기간이라 여러 언어들로 문제풀이 하기 빠듯해 한동안 c++로만 문제를 풀듯하다.


  • 풀이 - C++
#include <iostream>
#include <vector>

using namespace std;

int n; // n : 회원의 수
int score[51];
vector <int> V[51];

int dist[51][51]; //dist[x][y] : x에서 y까지 가는 최소 간선 수

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	//input
	cin >> n;

	for (int i = 1; i <= n; i++)//init
	{
		for (int j = 1; j <= n; j++)
		{
			if (i == j)continue;
			else dist[i][j] = 1000000000;
		}	
	}

	int x, y;
	while (true)
	{
		cin >> x >> y;

		if (x == y)break;

		dist[x][y] = 1;
		dist[y][x] = 1;//간선의 가중치는 1
	}

	for (int t = 1; t <= n ;t++) {
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				if (dist[i][j] > dist[i][t] + dist[t][j]) {
					// i-j 직접가는 것보다 i-k, k-i 거쳐서 가는 것이 더 이득일때 최소비용을 갱신
					dist[i][j] = dist[i][t] + dist[t][j];
				}
			}
		}
	}//만약 dist[i][j] 값에 1000000000값이 남아있다면 j점은 아무 점과도 연결되지 않은 것

	int score[51];
	int member = -1;
	for (int i = 1; i <= n; i++)
	{
		int m = 0;
		for (int j = 1; j <= n; j++)
		{
			if (dist[i][j] > m) m = dist[i][j];
		}
		score[i] = m;
		if (member > m || member == -1) member = m;
	}

	int cnt = 0;
	for (int i = 1; i <= n; i++)
	{
		if (score[i] == member) cnt++;
	}

	cout << member << " " << cnt << "\n";
	for (int i = 1; i <= n; i++)
	{
		if (score[i] == member) cout << i << " ";
	}

	return 0;
}

 

728x90
저작자표시 비영리 (새창열림)

'PS > 백준' 카테고리의 다른 글

[ 백준 ] 2583번: 영역 구하기  (0) 2022.03.15
[ 백준 ] 2485번 : 가로수 - ( C++ / C )  (0) 2022.03.15
[ 백준 ] 11723번 : 집합 - ( C++ / C )  (0) 2022.03.05
[ 백준 ] 10026번 : 적록색약 - ( C++/C )  (0) 2022.03.05
[ 백준 ] 1010번 : 다리놓기 - (C++/C , JAVA/자바 , PYTHON/파이썬 , Node.JS/자바스크립트 )  (0) 2022.03.03
    'PS/백준' 카테고리의 다른 글
    • [ 백준 ] 2583번: 영역 구하기
    • [ 백준 ] 2485번 : 가로수 - ( C++ / C )
    • [ 백준 ] 11723번 : 집합 - ( C++ / C )
    • [ 백준 ] 10026번 : 적록색약 - ( C++/C )
    발효홍삼
    발효홍삼
    코딩하는 홍삼

    티스토리툴바