728x90
반응형
[백준 1389] 케빈 베이컨의 6단계 법칙
문제 출처 : https://www.acmicpc.net/problem/1389
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class xy1 { int x; int y; xy1(int x, int y){ this.x = x; this.y = y; } } public class Problem1389 { static int[][] map; static boolean[] visited; static int n,m; static int[] cnt; static int min = 999999; public static void bfs(int v){ Queue<xy1> q = new LinkedList<>(); xy1 a = new xy1(v, 0); q.add(a); visited[v] = true; while(!q.isEmpty()){ xy1 b = q.poll(); int x = b.x; int y = b.y; for (int i = 1; i <= n; i++) { if(map[x][i] == 1 && visited[i] == false){ xy1 c = new xy1(i, y+1); q.add(c); visited[i] = true; cnt[i] += c.y; } } } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); map = new int[n+1][n+1]; cnt = new int[n+1]; for (int i = 0; i < m; i++) { st = new StringTokenizer(br.readLine()); int v1 = Integer.parseInt(st.nextToken()); int v2 = Integer.parseInt(st.nextToken()); map[v1][v2] = map[v2][v1] = 1; } for (int i = 1; i <= n; i++) { visited = new boolean[n+1]; // 반복문 돌 때마다 초기화 bfs(i); } for (int i = 1; i <= n; i++) { if(min > cnt[i]) min = cnt[i]; } for (int i = 1; i <= n; i++) { if(min == cnt[i]){ System.out.println(i); break; } } } } | cs |
728x90
반응형
'Algorithm > 백준(BOJ)' 카테고리의 다른 글
[백준 6588] 골드바흐의 추측 (2) | 2019.02.06 |
---|---|
[백준 10798] 세로 읽기 (2) | 2019.02.04 |
[백준 11724] 연결 요소의 개수 (0) | 2019.02.04 |
[백준 2178] 미로 탐색 (0) | 2019.02.02 |
[백준 1260] DFS와 BFS - 인접 행렬 이용 (0) | 2019.02.02 |