문제 제목 : 효율적인 해킹
난이도 : 하
문제 유형 : DFS, BFS
추천 풀이 시간 : 30분 (못하면 2배 60분)
https://www.acmicpc.net/problem/1325
1325번: 효율적인 해킹
첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main8 {
public static int pcCnt, connCnt, hackingCnt, maxHackingCnt;
public static ArrayList<ArrayList<Integer>> adjList = new ArrayList<>();
public static boolean[] visited = new boolean[10001];
public static Integer bfs(int node) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(node);
visited = new boolean[10001];
visited[node] = true;
hackingCnt = 1;
while (!queue.isEmpty()) {
int now = queue.poll();
for (int adjNode : adjList.get(now)) {
if (!visited[adjNode]) {
queue.offer(adjNode);
visited[adjNode] = true;
hackingCnt++;
}
}
}
return hackingCnt;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
pcCnt = Integer.parseInt(st.nextToken());
connCnt = Integer.parseInt(st.nextToken());
for (int i = 0; i < pcCnt + 1; i++) {
adjList.add(new ArrayList<Integer>());
}
for (int i = 0; i < connCnt; i++) {
st = new StringTokenizer(br.readLine());
int pc1 = Integer.parseInt(st.nextToken());
int pc2 = Integer.parseInt(st.nextToken());
adjList.get(pc2).add(pc1);
}
maxHackingCnt = 0;
List<Integer> resultList = new ArrayList<Integer>();
for (int i = 1; i < pcCnt + 1; i++) {
int cnt = bfs(i);
if (cnt > maxHackingCnt) {
maxHackingCnt = cnt;
resultList = new ArrayList<>();
resultList.add(i);
} else if (cnt == maxHackingCnt) {
resultList.add(i);
}
}
for (Integer result : resultList) {
System.out.print(result + " ");
}
}
}
'Algorithm > BAEKJOON' 카테고리의 다른 글
[알고리즘-DFS,BFS] 유기농 배추 (0) | 2023.01.24 |
---|---|
[알고리즘-DFS,BFS] 바이러스 (0) | 2023.01.24 |
[알고리즘-BFS] 숨바꼭질 (0) | 2023.01.24 |
[알고리즘-DFS,BFS] DFS와 BFS (0) | 2023.01.23 |
[알고리즘-DP] 가장 높은 탑 쌓기 (0) | 2023.01.23 |