poj 2524(并查集)

来源:互联网 发布:淘宝详情打不开 编辑:程序博客网 时间:2024/06/06 14:08
package com.liang.poj;import java.util.Scanner;public class Main {static int n = 0;static int m = 0;static int[] node = null;static int[] childNum = null;static int count = 0;static int sum = 0;public static void main(String[] args) throws Exception {Scanner scan = new Scanner(System.in);while (scan.hasNext()) {n = scan.nextInt();m = scan.nextInt();if(n == 0 || m == 0) {break;}node = new int[n + 1];childNum = new int[n + 1];makeSet();for (int i = 1; i <= m; i++) {int a = scan.nextInt();int b = scan.nextInt();merge(a, b);}for (int i = 1; i <= n; i++) {if (node[i] == i) {sum++;}}System.out.println("Case "+ ++count + ": " + sum);}}public static void makeSet() {sum = 0;for (int i = 1; i <= n; i++) {node[i] = i;childNum[i] = 0;}}public static int findFather(int x) {if (x != node[x]) {x = findFather(node[x]);}return x;}public static void merge(int a, int b) {int fa = findFather(a);int fb = findFather(b);if (fa != fb) {if (childNum[fa] >= childNum[fb]) {node[fb] = fa;childNum[fa]++;} else {node[fa] = fb;childNum[fb]++;}}}}

原创粉丝点击