File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < algorithm>
3
+ using namespace std ;
4
+
5
+ #define INF 9999999
6
+
7
+ int adj[101 ][101 ] = { 0 , };
8
+ int kevinBacon[101 ] = {0 , };
9
+
10
+ int main () {
11
+ int N, M;
12
+ cin>>N>>M;
13
+
14
+ for (int i=0 ;i<101 ;i++) { for (int j=0 ;j<101 ;j++) adj[i][j]=INF; } // 연결되지 않은 상태로 초기화
15
+
16
+ while (M--) {
17
+ int a, b;
18
+ cin>>a>>b;
19
+ adj[a][b] = 1 ;
20
+ adj[b][a] = 1 ; // 연결시켜줌
21
+ }
22
+
23
+ for (int k=1 ; k<=N; k++) { // 경유하는 친구
24
+ for (int i=1 ; i<=N; i++) {
25
+ for (int j=1 ; j<=N; j++) {
26
+ if (i!=j && j!=k && adj[i][j] > adj[i][k] + adj[k][j]) { // i와 j가 k에 의해 연결되어 있으면 (= INF 이상의 값이 나오지 않으면)
27
+ adj[i][j] = adj[i][k] + adj[k][j]; // 연결되어 있으므로 몇 단계만에 갈 수 있는지 계산해 저장함
28
+ adj[j][i] = adj[i][k] + adj[k][j];
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ int min = INF;
35
+ int minUser = 0 ;
36
+
37
+ for (int i=1 ; i<=N; i++) {
38
+ for (int j=1 ; j<=N; j++) {
39
+ cout<<adj[i][j]<<" " ;
40
+ if (adj[i][j] < INF) kevinBacon[i] += adj[i][j];
41
+ }
42
+ cout<<" kevinBacon: " <<kevinBacon[i]<<endl;
43
+ if (kevinBacon[i] < min) {
44
+ min = kevinBacon[i];
45
+ minUser = i;
46
+ }
47
+ }
48
+
49
+ cout<<minUser;
50
+ }
You can’t perform that action at this time.
0 commit comments