互粉攻略

题目描述

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

输入描述

第一行输入两个数 n 和 m,1≤n≤1000,1≤m≤100000。 接下来输入 m 行,每行输入两个数 a 和 b,表示编号 a 的人关注了编号 b 的人,0≤a,b≤n−1,a! =b。

输出描述

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

样例输入

4 3
0 2
2 3
0 1

样例输出

-2
1
0
1

思路

解决这个问题的关键就是找到粉丝数和关注数。所以直接找出度和入度就行了。

AC代码

#include <iostream>
#include <string.h>
using namespace std;
const int maxn = 1000;
int mat[1000][1000];
int d[100000];
int e[100000];
void init(){
    memset(mat,0,sizeof(mat));
}
void insert(int u,int v){
    mat[u][v] = 1;
}
int main(){
    init();
int n,m;
cin>>n>>m;
int x,y;
for(int i = 0;i<m;i++){
    cin>>x>>y;
    insert(x,y);
}
int o = 0,p = 0;
for(int k = 0;k<n;k++){
    for(int g = 0;g<n;g++){
        o+=mat[k][g];
        p+=mat[g][k];
    }
d[k]=o;
o=0;
e[k]=p;
p=0;
    cout<<e[k]-d[k]<<endl;
}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值