MLE!
查看原帖
MLE!
670998
Neven楼主2023/1/15 22:35
#include<bits/stdc++.h>
using namespace std;
int n, k, f[300005], eat[300005], cnt, a, b;//eat[a] = b表示a吃b
short op;
int find(int k){
	if(k == f[k]) return k;
	return f[k] = find(f[k]);
}
int main(){
	cin >> n >> k;
	for(int i = 1; i <= n * 3; i++){
		f[i] = i;
	}
	while(k--){
		cin >> op >> a >> b;
		int x = find(a), y = find(b);
		if(op == 1){
			if(eat[x] == y || eat[y] == x){
				cnt++;
				continue;
			}
			if(a > n || b > n){
				cnt++;
				continue;
			}
			f[x] = b;
		}else if(op == 2){
			if(x == y){
				cnt++;
				continue;
			}
			if(a > n || b > n){
				cnt++;
				continue;
			}
			eat[x] = y;
			eat[y] = x;
		}
	}
	cout << cnt << endl;
	return 0;
}
2023/1/15 22:35
加载中...