RE求调
查看原帖
RE求调
1058180
Love_Forever_楼主2024/4/13 09:16
#include <bits/stdc++.h>
using namespace std;

int fa[3000005];
int ans = 0;

int find(int x) {
	
	if (x!=fa[x]) fa[x]=find(fa[x]);

	return fa[x];
	
}

int hebing(int x, int y) {
	
	int r1 = find(fa[x]);
	int r2 = find(fa[y]);
	
	fa[r1] = r2;
	
}

int main() {
	
	int n, k;
	
	scanf("%d%d", &n, &k);
	
	for (int i = 1; i <= 3 * n; i++) {
		
		fa[i] = i;
		
	}

	int x, y, z;
	
	for (int i = 1; i <= k; i++) {

		scanf("%d%d%d", &z, &x, &y);
		
		if (x > n || y > n) {
			
			ans++;
			
		} else {
			
			if (z == 1) {
				if (find(x + n) == find(y) || find(x + 2 * n) == find(y)) {
					
					ans++;
					
				} else {
					
					hebing(x, y);
					hebing(x + n, y + n);
					hebing(x + 2 * n, y + 2 * n);
					
				}
			} else {
				
				if (x == y || find(x) == find(y) || find(x + 2 * n) == find(y)) {
					
					ans++;
				
				} else {
					
					hebing(x, y + 2 * n);
					hebing(x + n, y);
					hebing(x + 2 * n, y + n);
					
				}
				
			}
			
		}
		
	}
	
	printf("%d", ans);
	
	return 0;
	
}
2024/4/13 09:16
加载中...