1- import java .io .BufferedReader ;
2- import java .io .InputStreamReader ;
3- import java .util .StringTokenizer ;
1+ import java .io .*;
2+ import java .util .*;
43
54public class Main {
6- static int parent [];
7- static int N ;
8- static int M ;
9-
10-
11- private static int getparent (int x ) {
12- if (parent [x ] == x ) return x ;
13- return getparent (parent [x ]);
14- }
15-
16-
17- private static void unionparent (int a , int b ) {
18- a = getparent (a );
19- b = getparent (b );
20- if (a < b ) parent [b ] = a ;
21- else parent [b ] = getparent (a );
22- }
23-
24- public static void main (String [] args ) throws Exception {
25- BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
26- StringTokenizer st = new StringTokenizer (br .readLine ());
27- StringBuilder sb = new StringBuilder ();
28-
29- N = Integer .parseInt (st .nextToken ());
30- M = Integer .parseInt (st .nextToken ());
31- parent = new int [N + 1 ];
32- for (int i = 0 ; i < N + 1 ; i ++) parent [i ] = i ;
33-
34- for (int i = 0 ; i < M ; i ++) {
35- st = new StringTokenizer (br .readLine ());
36- int calculation = Integer .parseInt (st .nextToken ());
37- int a = Integer .parseInt (st .nextToken ());
38- int b = Integer .parseInt (st .nextToken ());
39-
40- //부모 합치기
41- if (calculation == 0 ) {
42- unionparent (a , b );
43-
44- }else {
45- if (getparent (a ) == getparent (b )) sb .append ("YES" ).append ("\n " );
46- else sb .append ("NO" ).append ("\n " );
47- }
48- }
49- System .out .println (sb );
50-
51-
52- }
53-
54- }
5+ static final String Y = "YES\n " ;
6+ static final String N = "NO\n " ;
7+ static int n , m ;
8+ static int [] p ;
9+ static StringTokenizer st ;
10+ static StringBuilder sb = new StringBuilder ();
11+ static BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
12+ static BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System .out ));
13+ public static void main (String [] args ) throws Exception {
14+ st = new StringTokenizer (br .readLine ());
15+ n = Integer .parseInt (st .nextToken ());
16+ m = Integer .parseInt (st .nextToken ());
17+ p = new int [n + 1 ];
18+
19+ for (int i = 0 ; i < n + 1 ; i ++) p [i ] = i ;
20+
21+ int cal , a , b ;
22+ for (int i = 0 ; i < m ; i ++){
23+ st = new StringTokenizer (br .readLine ());
24+ cal = Integer .parseInt (st .nextToken ());
25+ a = Integer .parseInt (st .nextToken ());
26+ b = Integer .parseInt (st .nextToken ());
27+
28+ if (cal == 0 ){
29+ if (a == b ) continue ;
30+ union (a , b );
31+ }else {
32+ if (find (a ) == find (b )) sb .append (Y );
33+ else sb .append (N );
34+ }
35+ }
36+ bw .append (sb );
37+ bw .close ();
38+ }
39+
40+ static int find (int a ){
41+ if (p [a ] == a ) return p [a ];
42+ return find (p [a ]);
43+ }
44+
45+ static boolean union (int a , int b ){
46+ a = find (a );
47+ b = find (b );
48+
49+ if (a == b ){
50+ return true ;
51+ } else if (a < b ){
52+ p [a ] = b ;
53+ } else {
54+ p [b ] = a ;
55+ }
56+ return false ;
57+ }
58+ }
59+
0 commit comments