반응형

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

 

2660번: 회장뽑기

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

www.acmicpc.net

 

 

한 노드에서 BFS를 시작했을 때, 모든 노드를 방문하게 되는 깊이가 해당 회원의 점수가 됩니다.

모든 노드마다 BFS를 수행해서 점수를 구해주었습니다.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <cstring>
#define MAX 51
using namespace std;

int n, a, b, visit[MAX], score[MAX];
vector<int> graph[MAX];

int bfs(int s, int v) {
	queue<int> q;
	q.push(s);
	memset(visit, 0, sizeof(visit));
	visit[s] = 1;
	
	int x;
	while (!q.empty()) {
		x = q.front();
		q.pop();
		for (int nxt : graph[x]) {
			if (visit[nxt]) continue;
			q.push(nxt);
			visit[nxt] = visit[x] + 1;
		}
	}
	return score[s] = visit[x] - 1;
}

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

	cin >> n;
	while (1) {
		cin >> a >> b;
		if (a == -1) break;
		graph[a].push_back(b);
		graph[b].push_back(a);
	}

	int mn = 51, cnt = 0;
	for (int i = 1; i <= n; i++)
		mn = min(mn, bfs(i, i));

	for (int i = 1; i <= n; i++)
		if (mn == score[i]) cnt++;

	cout << mn << " " << cnt << "\n";
	for (int i = 1; i <= n; i++)
		if (mn == score[i]) cout << i << " ";
}
반응형

'Algorithm' 카테고리의 다른 글

백준 11780 : 플로이드 2  (0) 2021.11.23
백준 16064 : Coolest Ski Route  (0) 2021.11.22
백준 2056 : 작업  (0) 2021.11.22
백준 10775 : 공항  (0) 2021.11.20
백준 1202 : 보석 도둑  (0) 2021.11.20

+ Recent posts