Skip to content

Commit ecb608d

Browse files
authored
[20250906] BOJ / G3 / A Bug's Life / 한종욱
1 parent dc997b2 commit ecb608d

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
```
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
private static List<Integer>[] graph;
9+
private static int[] visited;
10+
private static int N, M;
11+
12+
public static void main(String[] args) throws IOException {
13+
int T = Integer.parseInt(br.readLine());
14+
15+
for (int i = 1; i <= T; i++) {
16+
init();
17+
boolean result = true;
18+
19+
for (int ii = 1; ii <= N; ii++) {
20+
if (visited[ii] == 0) {
21+
result = BFS(ii);
22+
}
23+
24+
if (!result) break;
25+
}
26+
27+
bw.write(String.format("Scenario #%d:\n", i));
28+
if (result) bw.write("No suspicious bugs found!\n\n");
29+
else bw.write("Suspicious bugs found!\n\n");
30+
}
31+
32+
bw.flush();
33+
bw.close();
34+
br.close();
35+
}
36+
37+
private static void init() throws IOException {
38+
StringTokenizer st = new StringTokenizer(br.readLine());
39+
N = Integer.parseInt(st.nextToken());
40+
M = Integer.parseInt(st.nextToken());
41+
42+
graph = new List[N+1];
43+
visited = new int[N+1];
44+
45+
for (int i = 1; i <= N; i++) {
46+
graph[i] = new ArrayList<>();
47+
}
48+
49+
for (int i = 0; i < M; i++) {
50+
st = new StringTokenizer(br.readLine());
51+
int a = Integer.parseInt(st.nextToken());
52+
int b = Integer.parseInt(st.nextToken());
53+
54+
graph[a].add(b);
55+
graph[b].add(a);
56+
}
57+
}
58+
59+
private static boolean BFS(int start) {
60+
Queue<Integer> q = new ArrayDeque<>();
61+
visited[start] = 1;
62+
q.add(start);
63+
64+
while (!q.isEmpty()) {
65+
int current = q.poll();
66+
67+
for (int next : graph[current]) {
68+
if (visited[next] == 0) {
69+
visited[next] = 3 - visited[current];
70+
q.add(next);
71+
} else if (visited[next] == visited[current]) return false;
72+
}
73+
}
74+
75+
return true;
76+
}
77+
}
78+
```

0 commit comments

Comments
 (0)