Skip to content

Commit eb2e66c

Browse files
committed
고다혜: [BOJ] 9372 상근이의 여행_241219
1 parent b37b16f commit eb2e66c

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

BOJ/5001-10000번/DH_9372.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* 상근이의 여행
6+
*/
7+
8+
public class DH_9372 {
9+
public static void main(String[] args) throws Exception {
10+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
StringTokenizer st;
12+
13+
int T = Integer.parseInt(br.readLine());
14+
15+
Queue<Integer> q = new ArrayDeque<>();
16+
StringBuilder sb = new StringBuilder();
17+
18+
for(int t = 0; t < T; t++) {
19+
st = new StringTokenizer(br.readLine());
20+
21+
int n = Integer.parseInt(st.nextToken());
22+
int m = Integer.parseInt(st.nextToken());
23+
24+
boolean[] v = new boolean[n + 1];
25+
ArrayList<Integer> adj[] = new ArrayList[n + 1];
26+
for(int i = 0; i < adj.length; i++) adj[i] = new ArrayList<Integer>();
27+
28+
for(int i = 0; i < m; i++) {
29+
st = new StringTokenizer(br.readLine());
30+
int a = Integer.parseInt(st.nextToken());
31+
int b = Integer.parseInt(st.nextToken());
32+
33+
adj[a].add(b);
34+
adj[b].add(a);
35+
}
36+
37+
int answer = 0;
38+
39+
for(int i = 1; i < n; i++) {
40+
if(v[i]) continue;
41+
q.add(i);
42+
v[i] = true;
43+
44+
while(!q.isEmpty()) {
45+
int current = q.poll();
46+
47+
for(int next: adj[current]) {
48+
if(v[next]) continue;
49+
answer += 1;
50+
q.add(next);
51+
v[next] = true;
52+
}
53+
}
54+
}
55+
56+
sb.append(answer).append("\n");
57+
}
58+
59+
System.out.println(sb);
60+
}
61+
}

0 commit comments

Comments
 (0)