57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
#include <stdio.h>
|
|
|
|
int BFS(int person, int (*linked)[101], int N);
|
|
|
|
int main(){
|
|
int linked[101][101] = {0,};
|
|
int N,M;
|
|
scanf("%d %d",&N, &M);
|
|
for(int i=0; i<M; i++){
|
|
int a, b;
|
|
scanf("%d %d",&a, &b);
|
|
linked[a][b] = 1;
|
|
linked[b][a] = 1;
|
|
}
|
|
|
|
int min_kevin_bacon_num = 1000000;
|
|
int result_person;
|
|
|
|
for(int i=1; i<=N; i++){
|
|
int current_kevin_bacon_num = BFS(i, linked, N);
|
|
if(current_kevin_bacon_num < min_kevin_bacon_num) {
|
|
min_kevin_bacon_num = current_kevin_bacon_num;
|
|
result_person = i;
|
|
}
|
|
}
|
|
|
|
printf("%d\n",result_person);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int BFS(int person, int (*linked)[101], int N){
|
|
int front = 0, rear = 0;
|
|
int queue[101];
|
|
|
|
int distance[101] = {0,};
|
|
|
|
queue[rear++] = person;
|
|
distance[person] = 1;
|
|
|
|
while(front<rear){
|
|
int current_person = queue[front++];
|
|
for(int i=1; i<=N; i++){
|
|
if(linked[current_person][i] == 1 && distance[i] == 0){
|
|
distance[i] = distance[current_person] + 1;
|
|
queue[rear++] = i;
|
|
}
|
|
}
|
|
}
|
|
|
|
int total_distance = 0;
|
|
for(int i=1; i<=N; i++){
|
|
total_distance += (distance[i] - 1);
|
|
}
|
|
|
|
return total_distance;
|
|
} |