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
",see[n]);
    return 0;
}
原文地址:https://www.cnblogs.com/AKCqhzdy/p/8650549.html