백준 1389 케빈 베이컨의 6단계 법칙


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
// 16분
 
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <algorithm>
using namespace std;
 
const int INF = 1000000000;
 
int main() {
    int n, m, dist[101][101];
    scanf("%d %d"&n, &m);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            dist[i][j] = (i == j ? 0 : INF);
 
    for (int i = 0; i < m; i++) {
        int a, b;
        scanf("%d %d"&a, &b);
        dist[a][b] = dist[b][a] = 1;
    }
 
    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
 
    int num = INF;
    int ans;
    for (int i = 1; i <= n; i++) {
        int sum = 0;
        for (int j = 1; j <= n; j++) {
            sum += dist[i][j];
        }
        if (sum < num) {
            num = sum;
            ans = i;
        }
    }
    printf("%d\n", ans);
    return 0;
}
 
cs




플로이드-와샬 알고리즘 적용.



코드를 좀 더 깔끔하게 짤 수 있을 거 같기도 하고..







'Algorithm' 카테고리의 다른 글

백준 1003 피보나치 함수  (0) 2018.05.18
백준 1149 RGB거리  (0) 2018.05.18
백준 11403 경로 찾기  (0) 2018.05.17
백준 11404 플로이드  (0) 2018.05.17
백준 2468 안전 영역  (0) 2018.05.17
더보기

댓글,

jayharvey

머신러닝/딥러닝 관련 글을 포스팅할 예정입니다 :)