题意
如果一个人的所有链链接的人等级都比自己高,那么他就会被消灭掉。死的人还能被link。
解析
根本不需要建图,傻乎乎的建图建了好一会儿。而且直接模拟的话明显会超时,就要去观察一下性质:如果一个被高的人链接到了,那么一定会死。因为连锁反应,同一个连通的关系之中,最小的一个死了,就会导致连锁,如果一个数字被自己大的数字签到就会死。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int cnt[N];
int main() {
int n,m;
cin>>n>>m;
int res=0;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
if(u>v)
swap(u,v);
cnt[u]++;
if(cnt[u]==1)res++;
}
int q;
cin>>q;
while(q--){
int op,u,v;
cin>>op;
if(op==1){
cin>>u>>v;
if(u>v)
swap(u,v);
cnt[u]++;
if(cnt[u]==1)res++;
}
else if(op==2){
cin>>u>>v;
if(u>v)
swap(u,v);
cnt[u]--;
if(cnt[u]==0)res--;
}
else{
cout<<n-res<<endl;
}
}
}