티스토리 뷰

입력

첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻이다. A와 B가 친구이면, B와 A도 친구이며, A와 B가 같은 경우는 없다. 친구 관계는 중복되어 들어올 수도 있으며, 친구가 한 명도 없는 사람은 없다. 또, 모든 사람은 친구 관계로 연결되어져 있다. 사람의 번호는 1부터 N까지이며, 두 사람이 같은 번호를 갖는 경우는 없다.

출력

첫째 줄에 BOJ의 유저 중에서 케빈 베이컨의 수가 가장 작은 사람을 출력한다. 그런 사람이 여러 명일 경우에는 번호가 가장 작은 사람을 출력한다.

 


[BOJ 1389(S1) 리뷰]

 

입력으로 친구사이의 관계가 주어진다. 친구사이의 관계를 통하여 각 친구들끼리 총 몇번만에 연결이 되는지 구하고 그 연결의 수가 가장 적은사람을 출력해야 한다.

 

 

 

일단 친구들과의 관계는 relation 배열을 통해 인접행렬로 저장했다.

 

그 후에 1번부터 N번까지 각각 BFS를 수행하여 합이 가장 작은 친구의 INDEX를 출력했다.


 

#include <iostream>
#include <algorithm>
#include <list>
#include <string>
#include <vector>
#include <stack>
#include <utility>
#include <queue>
#include <deque>
using namespace std;

#define X first
#define Y second
int relation[102][102];
int vis[102];
int dx[4] = { 1,0,-1,0 };
int dy[4] = { 0,1,0,-1 };

int main(void)
{
	cin.tie(0);
	ios::sync_with_stdio(0);

	int N, M;
	cin >> N >> M;
	for (int i = 0; i < M; i++)
	{
		int a, b;
		cin >> a >> b;
		relation[a][b] = 1;
		relation[b][a] = 1;
	}
	
	int min = 999999;
	int ans = -1;
	for (int i = 1; i <= N; i++)
	{

		fill(vis, vis + N + 1, -1);
		int sum = 0;
		queue <int> Q;
		vis[i] = 0;
		Q.push(i);
		while (!Q.empty())
		{
			int cur = Q.front();
			Q.pop();
			for (int k = 1; k <= N; k++)
			{
				if (cur == k) continue;
				int nx = k;
				if (nx<1||nx>N) continue;
				if (vis[nx] != -1) continue;
				if (relation[cur][nx] != 1) continue;
				vis[nx] = vis[cur]+1;
				Q.push(nx);
			}
		}
		for (int i = 1; i <= N; i++)
		{
			sum += vis[i];
		}

		if (sum < min)
		{
			min = sum;
			ans = i;
		}

	}

	cout << ans;
	
}

 

'알고리즘 풀이 > BFS' 카테고리의 다른 글

BOJ : 1600 말이 되고픈 원숭이  (0) 2020.08.05
BOJ : 2589 보물섬  (0) 2020.08.05
BOJ : 3055 탈출  (0) 2020.08.05
BOJ : 13913 숨바꼭질 4  (0) 2020.08.05
BOJ : 6593 상범 빌딩  (0) 2020.08.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함