(백준 알고리즘 문제풀이) 1389번 케빈 베이컨의 6단계 법칙
by 줌코딩
문제
어떻게 접근할 것인가?
- 플로이드 와샬 알고리즘이라는데 그냥 수업시간 기억으로 플었다 키야ㅎㅎ
- 모든 노드에서 모든 노드로의 거리를 구하는 문제이다!
코드
#include <cstdio>
int n, m, n1, n2, **d, min = 1;
int main(){
scanf("%d %d", &n, &m);
d = new int*[n+1];
for(int i = 0; i < n+1; i++){
d[i] = new int[n+1];
for(int j = 1; j < n+1; j++)d[i][j] = 5000;
}
for(int i = 0; i < m; i++){
scanf("%d %d", &n1, &n2);
d[n1][n2] = d[n2][n1] = 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][j] > d[i][k] + d[k][j])d[i][j] = d[i][k] + d[k][j];
}
}
}
for(int i = 1; i < n+1; i++){
for(int j = 1; j < n+1; j++)d[i][0] += d[i][j];
if(d[i][0] < d[min][0])min = i;
}
printf("%d", min);
}
느낀점
- 알고리즘 수업 나름 열심히 들었는가보당..ㅎㅎㅎ 기분조타ㅎㅎ
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS