백준

백준 1389 케빈 베이컨의 6단계 법칙(Java)

Park DJ 2023. 2. 18. 03:54

https://www.acmicpc.net/problem/1389

 

1389번: 케빈 베이컨의 6단계 법칙

첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int num = 0;
    int min = 1000000000;
    int max = 1000000000;
    int n = sc.nextInt();
    int m = sc.nextInt();
    int arr[][] = new int[n + 1][n + 1];

    for(int i = 1; i <= n; i++) {
      for(int j = 1; j <= n; j++) {
        if(i == j) arr[i][j] = 0;
        else arr[i][j] = max;
      }
    }

    for(int i = 0; i < m; i++) {
      int a = sc.nextInt();
      int b = sc.nextInt();
      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 i = 1; i <= n; i++) {
      int count = 0;
      for(int j = 1; j <= n; j++) count += arr[i][j];
      if(min > count) {
        min = count;
        num = i;
      }
    }

   System.out.println(num);
  }
}