백준공부/java
[백준] 2660번 회장뽑기 (gold 5
gomduri43
2023. 11. 8. 20:31
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int n=Integer.valueOf(br.readLine());
int[][] map=new int[n+1][n+1];
for(int i=1; i<=n; i++){
Arrays.fill(map[i],Integer.MAX_VALUE);
map[i][i]=0;
}
String input;
while((input=br.readLine()) !=null){
StringTokenizer st=new StringTokenizer(input);
int a=Integer.valueOf(st.nextToken());
int b=Integer.valueOf(st.nextToken());
if(a+b==-2){
break;
}
map[a][b]=1;
map[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(i==j || map[i][k]==Integer.MAX_VALUE || map[k][j]==Integer.MAX_VALUE){
continue;
}
if(map[i][j]> map[i][k]+map[k][j]){
map[i][j]=map[i][k]+map[k][j];
}
}
}
}
StringBuilder sb=new StringBuilder();
int min=Integer.MAX_VALUE;
int total=0;
for(int i=1; i<=n; i++){
int temp=Integer.MIN_VALUE;
for(int j=1; j<=n; j++){
if(i==j){
continue;
}
temp=Math.max(temp, map[i][j]);
}
if(min > temp){
sb.setLength(0);
min=temp;
total=1;
sb.append(i+" ");
}
else if(min==temp){
sb.append(i+" ");
total++;
}
}
bw.write(min+" "+total+"\n");
bw.write(sb.toString());
bw.flush();
}
}