Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c2e95f6

Browse files
committed
108冗余连接 java实现
1 parent 94bdecf commit c2e95f6

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

‎problems/kamacoder/0108.冗余连接.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,81 @@ int main() {
176176
177177
### Java
178178
179+
```java
180+
import java.util.Scanner;
181+
182+
public class Main {
183+
private static int[] father;
184+
185+
public static void main(String[] args) {
186+
Scanner scanner = new Scanner(System.in);
187+
int pointNum = scanner.nextInt();
188+
father = new int[pointNum + 1];
189+
init();
190+
for (int i = 0; i < pointNum; i++) {
191+
join(scanner.nextInt(), scanner.nextInt());
192+
}
193+
}
194+
195+
/**
196+
* 并查集初始化
197+
*/
198+
private static void init() {
199+
for (int i = 1; i < father.length; i++) {
200+
// 让每个元素指向自己
201+
father[i] = i;
202+
}
203+
}
204+
205+
/**
206+
* 并查集寻根
207+
*
208+
* @param u
209+
* @return
210+
*/
211+
private static int find(int u) {
212+
// 判断 u 是否等于自己,如果是的话,直接返回自己
213+
// 如果不等于自己,就寻找根,寻找的时候,反复进行路径压缩
214+
return u == father[u] ? u : (father[u] = find(father[u]));
215+
}
216+
217+
/**
218+
* 判断 u 和 v 是否同根
219+
*
220+
* @param u
221+
* @param v
222+
* @return
223+
*/
224+
private static boolean isSame(int u, int v) {
225+
return find(u) == find(v);
226+
}
227+
228+
/**
229+
* 添加 边 到并查集,v 指向 u
230+
*
231+
* @param u
232+
* @param v
233+
*/
234+
private static void join(int u, int v) {
235+
// --if-- 如果两个点已经同根,说明他们的信息已经存储到并查集中了,直接返回即可
236+
// 寻找u的根
237+
int uRoot = find(u);
238+
// 寻找v的根
239+
int vRoot = find(v);
240+
if (uRoot == vRoot) {
241+
// --if-- 如果u,v的根相同,说明两者已经连接了,直接输出
242+
System.out.println(u + " " + v);
243+
return;
244+
}
245+
// --if-- 将信息添加到并查集
246+
father[vRoot] = uRoot;
247+
}
248+
249+
}
250+
```
251+
252+
253+
179254
### Python
180255

181256
```python

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /