您的位置:首页 > 其它

计蒜客习题:互粉攻略

2017-12-30 10:13 603 查看
模拟

蒜头君和他的同事们最近在玩一个好玩的游戏:互粉攻略。一共有 NN 个人参加游戏,编号从 00 到 N
- 1N−1,游戏前每个人都会展示自己最靓丽的一面。当游戏开始时,每个人可以选择去关注别人。当 AA 关注了 BB,则 AA 就成了 BB的粉丝,但是并不意味着 BB 同时关注了 AA。当所有人都选好后,游戏结束,人气指数最高的人成为冠军。蒜头君制定了奇怪的规定:一个人的人气指数等于他的粉丝数减去关注数,因为蒜头君觉得人气高的人,往往有很多粉丝,并且一般都非常高冷,很少去关注别人。
蒜头君发现一共有 MM 条关注,粗心的他在统计时出了点小问题,所以可能会出现重复的关注。现在蒜头君想知道每个人的人气指数,聪明的你能帮帮他么?

输入格式

第一行输入两个数 nn 和 mm,1
\leq n\leq 10001≤n≤1000,1
\leq m \leq 1000001≤m≤100000。

接下来输入 mm 行,每行输入两个数 aa 和 bb,表示编号 aa 的人关注了编号 bb 的人,0
\leq a, b \leq n - 10≤a,b≤n−1,a
\neq ba≠b。

输出格式

输出 NN 行,每行输出每个人的人气指数,按编号依次输出即可。

样例输入

4 3
0 2
2 3
0 1


样例输出

-2
1
0
1


#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>

using namespace std;
int n,m;
int deg[1007];
struct edge{
int x,y;
bool operator <(const edge &rhs) const{
return x<rhs.x||(x==rhs.x&&y<rhs.y);
}
};

set<edge> s;
inline int read(){int x;scanf("%d",&x);return x;}
int main(){
n=read();m=read();
memset(deg,0,sizeof(deg));
for(int i=0;i<m;i++)
{
edge e;
e.x=read();e.y=read();
if(!s.count(e)) {s.insert(e);deg[e.x]--;deg[e.y]++;}
}
for(int i=0;i<n;i++){
printf("%d\n",deg[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模拟 图的度数