考试的时候被卡常了~
code:
#include <bits/stdc++.h> #define ll long long #define N 200002 #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) using namespace std; int n,m; int size[N]; int answer[N]; map<int,int>con[N]; map<int,int>::iterator it; int main() { int i,j; // setIO("qq"); scanf("%d%d",&n,&m); for(i=1;i<=m;++i) { char op[2]; scanf("%s",op); if(op[0]=='!') { int x; scanf("%d",&x); ++size[x]; } if(op[0]=='+') { int x,y; scanf("%d%d",&x,&y); if(!con[x][y]) { con[x][y]=con[y][x]=1; answer[y]-=size[x]; answer[x]-=size[y]; } } if(op[0]=='-') { int x,y; scanf("%d%d",&x,&y); if(con[x][y]) { con[x][y]=con[y][x]=0; answer[x]+=size[y]; answer[y]+=size[x]; } } } for(i=1;i<=n;++i) { for(it=con[i].begin();it!=con[i].end();it++) { if(it->second==0) continue; int u=it->first; answer[u]+=size[i]; } } for(i=1;i<=n;++i) printf("%d ",answer[i]); return 0; }