ACM HDOJ 1232 (畅通工程 )
2014-01-12 16:32
302 查看
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1232
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scn = new Scanner(System.in); while (true) { int pointsNumber = Integer.parseInt(scn.next()); if (0 == pointsNumber) { break; } DisjointSet disjointSet = new DisjointSet(pointsNumber); int relationNumber = Integer.parseInt(scn.next()); while (0 <= --relationNumber) { int x = Integer.parseInt(scn.next()) - 1; int y = Integer.parseInt(scn.next()) - 1; disjointSet.union(x, y); } System.out.println(disjointSet.calculateSetNumber() - 1); } scn.close(); } } class DisjointSet { private int pointsNumber; private int[] flag; private int find(int r) { while (r != flag[r]) { r = flag[r]; } return r; } public DisjointSet(int pointsNumber) { this.pointsNumber = pointsNumber; flag = new int[pointsNumber]; for (int i = 0; i < pointsNumber; ++i) { flag[i] = i; } } public int calculateSetNumber() { int count = 0; for (int i = 0; i < pointsNumber; ++i) { if (flag[i] == i) { ++count; } } return count; } public void union(int x, int y) { int xRoot = find(x); int yRoot = find(y); if (xRoot != yRoot) { flag[yRoot] = xRoot; } } }
相关文章推荐
- HDOJ 1232 畅通工程 杭电 ACM
- HDOJ 1232 畅通工程
- HDOJ1232. 畅通工程(并查集连通块计数)
- HDOJ 1879 HDU 1879 继续畅通工程 ACM 1879 IN HDU
- HDOJ 畅通工程 JAVA 1232
- hdoj1232 畅通工程
- hdoj 1232 畅通工程
- hdoj 1232 畅通工程
- hdoj.1232 畅通工程 20140814
- HDOJ 1232 畅通工程
- HDOJ 1232 畅通工程 (并查集)
- ACM HDOJ 1233 (还是畅通工程)
- HDOJ 1232 畅通工程 (并查集)
- HDOJ1232 畅通工程 【并查集】
- hdoj 1232 畅通工程
- HDOJ 1232 畅通工程(并查集)
- HDOJ 1232 畅通工程
- HDOJ1232 畅通工程(并查集)
- HDOJ 1232 畅通工程(并查集)
- HDOJ 1232 畅通工程