본문 바로가기
알고리즘/BFS

[백준][JAVA] 1325번 효율적인 해킹

by 박뀨뀨 2024. 2. 1.
 

1325번: 효율적인 해킹

첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한

www.acmicpc.net

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
	
	static int N, M, A, B, hackingResult[], max;
	static List<Integer>[] graph;
	static boolean[] visited;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		graph = new List[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());
			
			A = Integer.parseInt(st.nextToken());
			B = Integer.parseInt(st.nextToken());
			
			graph[A].add(B);
		}
		
		hackingResult = new int[N + 1]; // hackingResult[i] : i번컴퓨터해킹시 해킹가능한총컴퓨터수
		
		for (int i = 1; i <= N; i++) {
			visited = new boolean[N + 1];
			Queue<Integer> q = new LinkedList<>();
			q.offer(i);
			visited[i] = true;
			
			while (!q.isEmpty()) {
				int cur = q.poll();
				
				for (int next : graph[cur]) {
					if (!visited[next]) {
						visited[next] = true;
						q.offer(next);
						hackingResult[next]++;
					}
				}
			}
		}
		
		for (int value : hackingResult) {
			max = Math.max(max, value);
		}
		
		for (int i = 1; i <= N; i++) {
			if (hackingResult[i] == max) {
				sb.append(i).append(" ");
			}
		}
		sb.append("\n");
		
		System.out.print(sb);
	}

}

설명

ArrayDeque으로 Queue 생성시 시간초과 나고,

LinkedList로 생성시 통과했다.

 

728x90

'알고리즘 > BFS' 카테고리의 다른 글

[백준][JAVA] 13913번 숨바꼭질 4  (1) 2024.02.21
[백준][JAVA] 3197번 백조의 호수  (1) 2023.12.22
[백준][JAVA] 16236번 아기 상어  (0) 2023.12.18