백준공부/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();

    }
}