백준_1389 케빈 베이컨의 6단계 법칙 (플로이드-워셜)Algorithm/Algorithm 문제2024. 2. 29. 11:04
Table of Contents
양방향 엣지여야함을 주의
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_1389_케빈베이컨의6단계법칙 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[][] distance = new int[n+1][n+1];
int[] result = new int[n+1];
int i, j;
for (i=1; i<n+1; i++) {
for (j=1; j<n+1; j++) {
if (i==j) {
distance[i][j] = 0;
} else {
distance[i][j] = 500001;
}
}
}
int a, b;
for (i=0; i<m; i++) {
st = new StringTokenizer(br.readLine(), " ");
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
distance[a][b] = 1;
distance[b][a] = 1;
}
int k;
for (k=1; k<n+1; k++) {
for (i=1; i<n+1; i++) {
for (j=1; j<n+1; j++) {
if (distance[i][j] > distance[i][k] + distance[k][j]) {
distance[i][j] = distance[i][k] + distance[k][j];
}
}
}
}
int temp;
int min = 500001;
for (i=1; i<n+1; i++) {
temp = 0;
for (j=1; j<n+1; j++) {
temp += distance[i][j];
}
result[i] = temp;
if (min > temp) {
min = temp;
}
}
for (i=1; i<n+1; i++) {
if (result[i] == min) {
System.out.println(new StringBuilder().append(i));
break;
}
}
}
}
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_17472_다리 만들기 2 (mst&bfs) (0) | 2024.03.02 |
---|---|
백준_1197_최소스패닝트리 (mst) (0) | 2024.03.02 |
백준_11403 경로 찾기 (플로이드-워셜) (1) | 2024.02.28 |
백준_11404 플로이드 (플로이드-워셜) (1) | 2024.02.27 |
백준_1219 오민식의 고민 (벨만-포드) (1) | 2024.02.26 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!