File tree Expand file tree Collapse file tree 1 file changed +61
-0
lines changed Expand file tree Collapse file tree 1 file changed +61
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments