백준 1325번

veloger·2022년 12월 28일
0


코드

package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Q47p265 {
	static BufferedReader buf;
	static BufferedWriter bw;
	static StringTokenizer st;
	
	static ArrayList<Integer> [] list;
	static int []ans;
	static boolean []visited;
	
	public static void BFS(int index) {
		Queue<Integer> qu =new LinkedList<Integer>();
		qu.add(index);
		visited[index]=true;
		while(!qu.isEmpty()) {
			int node = qu.poll();
			for(int i : list[node]) {
			if(visited[i] == false ) {
				visited[i] = true;
				++ans[i];
				qu.add(i);
				}
			}
		}
	}
	
	public static void main(String[] args) throws IOException, NumberFormatException {
		// TODO Auto-generated method stub
	buf=new BufferedReader(new InputStreamReader(System.in));
	bw =new BufferedWriter(new OutputStreamWriter(System.out));
	st=new StringTokenizer(buf.readLine());
	int nodes=Integer.parseInt(st.nextToken());
	int edges =Integer.parseInt(st.nextToken());
	
	list = new ArrayList[nodes+1];
	ans = new int[nodes+1];
	
	for(int i=1;i<=nodes;i++) {
		list[i]=new ArrayList<>();
	}
	
	for(int i =1; i<=edges;i++) {
		st =new StringTokenizer(buf.readLine());
		int x= Integer.parseInt(st.nextToken());
		int y= Integer.parseInt(st.nextToken());
		list[x].add(y);
	}
	
	for(int i=1; i<=nodes;i++) {
		visited = new boolean[nodes+1];
		BFS(i);
	}
	
	int max=0;
	for(int i=1;i<=nodes;i++) {
		max = ans[i] > max ? ans[i] : max;
	}
	

	for(int i=1;i<=nodes;i++) {
		if(ans[i]==max) { 
			bw.write(i+" ");
		}
	}
	bw.flush();
	
	
  }

}

0개의 댓글