【种类并查集】P2024 [NOI2001]食物链
1 #include<iostream> 2 using namespace std; 3 4 int fa[150010]; 5 int n, k; 6 int cnt; 7 8 int find(int x) 9 { 10 if (x == fa[x]) return x; 11 fa[x] = find(fa[x]); 12 return fa[x]; 13 } 14 15 void merge1(int a, int b) 16 { 17 fa[find(a)] = find(b); 18 fa[find(a + n)] = find(b + n); 19 fa[find(a + n * 2)] = find(b + n * 2); 20 } 21 22 void merge2(int a, int b) 23 { 24 fa[find(a)] = find(b + n + n); 25 fa[find(a + n)] = find(b); 26 fa[find(a + n + n)] = find(b + n); 27 } 28 29 struct Edge 30 { 31 int u, v; 32 }e[100010]; 33 34 int main() 35 { 36 cin >> n >> k; 37 for (int i = 1; i <= n * 3; i++)