首页 > 其他 > 详细

BZOJ 4419 发微博

时间:2016-05-08 13:33:08      阅读:187      评论:0      收藏:0      [点我收藏+]

set暴力。记录一个rec数组表示每一个人发了多少次微博,当+时减去rec,-时加上rec即可表示看到了这个人的微博数量。

最后遍历一遍set再加上rec即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#define maxn 200500
using namespace std;
set <int> s[maxn];
int n,m,x,y,ans[maxn],rec[maxn];
set <int> ::iterator it;
char ss[2];
void work1()
{
    scanf("%d",&x);
    rec[x]++;
}
void work2()
{
    scanf("%d%d",&x,&y);
    s[x].insert(y);
    s[y].insert(x);
    ans[x]-=rec[y];
    ans[y]-=rec[x];
}
void work3()
{
    scanf("%d%d",&x,&y);
    s[x].erase(y);
    s[y].erase(x);
    ans[x]+=rec[y];
    ans[y]+=rec[x];
}
int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++)
    {
        scanf("%s",ss);
        if (ss[0]==!) work1();
        else if (ss[0]==+) work2();
        else work3();
    }
    for (int i=1;i<=n;i++)
    {
        for (it=s[i].begin();it!=s[i].end();it++)
        {
            int now=*it;
            ans[i]+=rec[now];
        }
    }
    for (int i=1;i<=n-1;i++)
        printf("%d ",ans[i]);
    printf("%d\n",ans[n]);
    return 0;
}

 

BZOJ 4419 发微博

原文:http://www.cnblogs.com/ziliuziliu/p/5470337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!