티스토리 뷰

https://www.acmicpc.net/problem/1389

 

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

첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻��

www.acmicpc.net

전체 유저의 수가 최대 100이기 때문에 O(N^3)인 플로이드 와샬 알고리즘을 이용해 풀이했습니다. 


C++ 소스 코드

#include <iostream>
#define INF 500000
using namespace std;
int d[101][101];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int n,m, ans,a,b,minCnt = INF;
    cin >> n >> m;
    fill(&d[0][0],&d[100][100]+1,INF);
    for(int i=1;i<=n;i++){
        d[i][i]=0;
    }
    for(int i=0;i<m;i++){
        cin >> a >> b;
        d[a][b] = 1;
        d[b][a] = 1;
    }
    for(int k=1;k<=n;k++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(d[i][k]+d[k][j]<d[i][j]){
                    d[i][j] = d[i][k]+d[k][j];
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        int sum = 0;
        for(int j=1;j<=n;j++){
            sum+=d[i][j];
        }
        if (sum < minCnt) {
            minCnt = sum;
            ans = i;
        }
    }
    cout << ans << '\n';
    return 0;
}

'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글

BOJ) 10451 - 순열 사이클  (0) 2020.10.22
BOJ) 17837 - 새로운 게임 2  (0) 2020.10.15
BOJ) 12869 - 뮤탈리스크  (0) 2020.10.06
BOJ) 2206 - 벽 부수고 이동하기  (0) 2020.10.05
BOJ) 7569 - 토마토  (0) 2020.09.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
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
글 보관함