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

풀이

돌리고 돌리고 돌리고~

코드

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;

int n, m, dst[5005];
vector<int> gph[5005];

int bfs(int start) {
    int ret = 0;
    queue<int> que;
    memset(dst, 0, sizeof(dst));
    que.push(start);
    while (!que.empty()) {
        int now = que.front();
        que.pop();
        ret += dst[now];
        for (int nxt : gph[now]) {
            if (dst[nxt]) continue;
            dst[nxt] = dst[now] + 1;
            que.push(nxt);
        }
    }
    return ret;
}

int main() {
    scanf("%d %d", &n, &m);
    for (int i = 0; i < m; i++) {
        int u, v;
        scanf("%d %d", &u, &v);
        gph[u].push_back(v);
        gph[v].push_back(u);
    }

    int mcnt = 1e9, midx = 1;
    for (int i = 1; i <= n; i++) {
        int ret = bfs(i);
        if (ret < mcnt) {
            mcnt = ret, midx = i;
        }
    }

    printf("%d", midx);

    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-08-27 23:53

Read more posts by this author