2660번: 회장뽑기
입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터
www.acmicpc.net
주의할 점)
1. 처음 arr에 담는 값을 Integer.MAX 값으로 담으면 안 된다.
2. 모든 정점들의 경로를 알아내는 과정은 플로이드 와샬 알고리즘!
package Floyd_Warshall;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Baekjoon_2660_회장뽑기 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N+1][N+1];
for(int i = 1; i < N+1; i++) {
for(int j = 1; j < N+1; j++) {
if(i != j)
arr[i][j] = 987654321;
}
}
while(true) {
st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
if(a == -1 && b == -1) break;
arr[a][b] = arr[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 (arr[i][j] > arr[i][k] + arr[k][j]) {
arr[i][j] = arr[i][k] + arr[k][j];
}
}
}
}
// for (int k = 1; k <= N; k++) {
// for (int i = 1; i <= N; i++) {
// System.out.print(arr[k][i]);
// }
// System.out.println();
// }
int[] score = new int[N+1]; // 각 회원들의 점수 담아두는 배열 (arr의 각 행의 최대값)
int min = Integer.MAX_VALUE;
for(int i = 1; i < N+1; i++) {
int max = 0;
for(int j = 1; j < N+1; j++) {
if(arr[i][j] > max)
max = arr[i][j];
}
score[i] = max;
if(min > score[i]) {
min = score[i];
}
}
//for(int j : score) System.out.println(j);
ArrayList<Integer> list = new ArrayList<>();
for(int i = 1; i < N+1; i++) {
if(min == score[i])
list.add(i);
}
System.out.println(min + " " + list.size());
for(int i : list) System.out.print(i+" ");
}
}
'알고리즘 > BAEKJOON' 카테고리의 다른 글
| 2018 수들의 합5_Two Pointers (0) | 2021.06.25 |
|---|---|
| 2617 구슬 찾기_Floyd Warshall (0) | 2021.06.24 |
| 9205 맥주 마시면서 걸어가기_Floyd Warshall (0) | 2021.06.21 |
| 1753 최단경로_Dijkstra (0) | 2021.06.21 |
| 14496 그대, 그머가 되어_Dijkstra (0) | 2021.06.20 |