Skip to content

Commit eeefe35

Browse files
authored
[20260326] BOJ / G5 / 귀찮은 해강이 / 이인희
1 parent 347f16f commit eeefe35

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
```java
2+
import java.util.*;
3+
import java.io.*;
4+
5+
public class Main{
6+
static int N, M;
7+
static int[] Order;
8+
static class UF{
9+
int[] roots;
10+
int[] sizes;
11+
UF(int n){
12+
roots = new int[n];
13+
sizes = new int[n];
14+
for(int i = 0; i < n; i++){
15+
roots[i] = i;
16+
sizes[i] = 1;
17+
}
18+
}
19+
int getRoot(int target){
20+
while(true){
21+
int temp = roots[target];
22+
if(temp == target)
23+
return temp;
24+
target = temp;
25+
}
26+
27+
}
28+
void union(int a1, int a2){
29+
int r1 = getRoot(a1);
30+
int r2 = getRoot(a2);
31+
if(r1 == r2) return;
32+
if(sizes[r1] >= sizes[r2]){
33+
roots[r2] = r1;
34+
sizes[r1] += sizes[r2];
35+
}else{
36+
roots[r1] = r2;
37+
sizes[r2] += sizes[r1];
38+
}
39+
}
40+
boolean connected(int a1, int a2){
41+
return getRoot(a1) == getRoot(a2);
42+
43+
}
44+
}
45+
46+
public static void main(String[] args) throws IOException{
47+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
48+
StringTokenizer st = new StringTokenizer(br.readLine());
49+
N = Integer.parseInt(st.nextToken());
50+
M = Integer.parseInt(st.nextToken());
51+
Order = new int[N];
52+
UF uf = new UF(N);
53+
for(int m = 0; m < M; m++){
54+
st = new StringTokenizer(br.readLine());
55+
int a1 = Integer.parseInt(st.nextToken()) - 1;
56+
int a2= Integer.parseInt(st.nextToken())-1;
57+
uf.union(a1, a2);
58+
59+
}
60+
st = new StringTokenizer(br.readLine());
61+
int prev = Integer.parseInt(st.nextToken())-1;
62+
int prevRoot = uf.getRoot(prev);
63+
int answer = 0;
64+
// System.out.println("DEBUG: ");
65+
while(st.hasMoreTokens()){
66+
// System.out.println("DEBUG: ");
67+
int now = Integer.parseInt(st.nextToken())-1;
68+
int nowRoot = uf.getRoot(now);
69+
if(prevRoot != nowRoot)
70+
answer++;
71+
prev = now;
72+
prevRoot = nowRoot;
73+
}
74+
System.out.println(answer);
75+
br.close();
76+
}
77+
}
78+
```

0 commit comments

Comments
 (0)