hihocoder1066-并查集
2017-08-02 16:40
323 查看
package com.snnu; import java.util.HashMap; import java.util.Scanner; public class union_find { static int maxn = 100000; static int[] disjointSet = new int[maxn]; static int len; static int initVal = 0; public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); HashMap<String, Integer> map = new HashMap<>(); len = N; initData(); for (int i = 0; i < N; i++) { int op = in.nextInt(); String name1 = in.next(); String name2 = in.next(); int fatherx, fathery; if(op == 0) { if (!map.containsKey(name1)) { map.put(name1, initVal++); } if (!map.containsKey(name2)) { map.put(name2, initVal++); } fatherx = find(map.get(name1)); fathery = find(map.get(name2)); if( fatherx != fathery){ union(fatherx, fathery); } }else { fatherx = find(map.get(name1)); fathery = find(map.get(name2)); if(fatherx == fathery){ System.out.println("yes"); }else { System.out.println("no"); } } } } private static void union(int x, int y) { disjointSet[x] = y; } private static int find(int val){ while (val != disjointSet[val]){ val = disjointSet[val]; } return val; } private static void initData() { for (int i = 0; i < len; i++) { disjointSet[i] = i; } initVal = 0; } }
相关文章推荐
- hihocoder 1066 无间道(基础并查集)
- hihoCoder 1066 无间道之并查集
- [ACM] hihocoder 1066 无间道之并查集
- hihocoder 1066 并查集java实现
- hihocoder 1066 无间道之并查集
- [hihocoder1066]无间道之并查集
- hihoCoder_#1066_无间道之并查集
- hihocoder1066 并查集
- hihoCoder 1066 : 无间道之并查集
- C - 无间道之并查集 HihoCoder - 1066
- hihoCoder 1066 : 无间道之并查集(字符串Hash函数)
- hihoCoder 1066 : 无间道之并查集
- hihoCoder - 1066 - 无间道之并查集
- hihocoder#1066之并查集
- hihoCoder - 1066 - 无间道之并查集 (并查集 + map)
- hihoCoder 1066 无间道之并查集
- #1066 : 无间道之并查集
- hihocoder 1291 : Building in Sandbox (离线并查集)
- [HihoCoder]#1066 : 无间道之并查集
- Hiho #1066 : 无间道之并查集 【map+并查集】