bzoj4419: [Shoi2013]发微博
这个不是超级大傻逼题吗。
当成为friend的时候就减去双方发过的微博
绝交的时候就加上
诶等等如果到最后都没友尽呢。。只能暴力set搞搞咯。
#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<cmath> #include<set> using namespace std; set<int> s[210000]; set<int> :: iterator it; int send[210000],see[210000]; char ss[2]; int main() { int n,m,x,y; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)s[i].clear(); memset(send,0,sizeof(send)); for(int i=1;i<=m;i++) { scanf("%s",ss+1); if(ss[1]=='!') { scanf("%d",&x); send[x]++; } else if(ss[1]=='+') { scanf("%d%d",&x,&y); see[x]-=send[y];see[y]-=send[x]; s[x].insert(y);s[y].insert(x); } else { int x,y;scanf("%d%d",&x,&y); see[x]+=send[y];see[y]+=send[x]; s[x].erase(y);s[y].erase(x); } } for(int i=1;i<=n;i++) for(it=s[i].begin();it!=s[i].end();it++) see[i]+=send[*it]; for(int i=1;i<n;i++)printf("%d ",see[i]); printf("%d\n",see[n]); return 0; }
pain and happy in the cruel world.