diff --git "a/GnuPark/PS/BOJ/DFS_BFS/\355\232\250\354\234\250\354\240\201\354\235\270_\355\225\264\355\202\271_1325.java" "b/GnuPark/PS/BOJ/DFS_BFS/\355\232\250\354\234\250\354\240\201\354\235\270_\355\225\264\355\202\271_1325.java" new file mode 100644 index 0000000..cb1a24d --- /dev/null +++ "b/GnuPark/PS/BOJ/DFS_BFS/\355\232\250\354\234\250\354\240\201\354\235\270_\355\225\264\355\202\271_1325.java" @@ -0,0 +1,67 @@ +package BOJ.DFS_BFS; + +import java.io.*; +import java.util.*; + +public class 효율적인_해킹_1325 { + static int n, m; + static int ans; + static boolean visit[]; + static int arr[]; + static ArrayList[] graph; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + graph = new ArrayList[n+1]; + arr = new int[n+1]; + for (int i = 1; i <= n; i++) { + graph[i] = new ArrayList<>(); + } + + for (int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + int s = Integer.parseInt(st.nextToken()); + int e = Integer.parseInt(st.nextToken()); + + graph[e].add(s); + } + + for (int i = 1; i <= n; i++) { + visit = new boolean[n + 1]; + bfs(i); + } + StringBuffer sb = new StringBuffer(); + for (int i = 1; i < arr.length; i++) { + if (arr[i] == ans){ + sb.append(i + " "); + } + } + System.out.println(sb.toString()); + + } + + public static void bfs(int index){ + Queue q = new LinkedList(); + q.offer(index); + visit[index] = true; + + while (!q.isEmpty()) { + int now = q.poll(); + + for (int v : graph[now]){ + if(!visit[v]) { + visit[v] = true; + arr[index] ++; + q.offer(v); + } + } + } + if (ans < arr[index]){ + ans = arr[index]; + } + + } +}