-
반응형
1389번: 케빈 베이컨의 6단계 법칙
첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻
www.acmicpc.net
모든 정점에 대해 bfs를 수행하며 해당 정점으로부터의 거리를 모두 더해준값들을 배열에 저장한뒤, 최소값을 찾아 출력해주면 된다.
#include<iostream> #include <algorithm> #include<vector> #include<queue> using namespace std; vector<int> v[101]; int n, m; int dist[101]; bool visited[101]; int result[101]; void bfs(int st) { //bfs전 초기화 for (int i = 0; i <= n; i++) { visited[i] = false; dist[i] = 0; } queue<int> q; q.push(st); visited[st] = true; while (!q.empty()) { int now = q.front(); q.pop(); for (int i = 0; i < v[now].size(); i++) { int next = v[now][i]; if (!visited[next]) { visited[next] = true; dist[next] = dist[now] + 1; q.push(next); result[st] += dist[next]; } } } } int main() { cin >> n >> m; for (int i = 0; i < m; i++) { int from, to; cin >> from >> to; v[from].push_back(to); v[to].push_back(from); } for (int i = n; i >=1; i--) { bfs(i); } int Min = result[n]; int mini = n; for (int i = n - 1; i >= 1; i--) { if (Min >= result[i]) { mini = i; Min = result[i]; } } cout << mini; return 0; }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준oj] 12846번 무서운 아르바이트 (0) 2020.12.29 [백준oj] 5676번 음주코딩 (0) 2020.12.29 [백준oj] 1261번 알고스팟 (0) 2020.12.29 [백준oj] 1300번 k번째 수 (0) 2020.12.29 [백준oj] 1976번 여행가자 (0) 2020.12.29 댓글