计蒜客 互粉攻略

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

#include<bits/stdc++.h>
using namespace std;
const int MAX_N=1010;
const int MAX_M=100010;
int g[MAX_N]={0};//关注数 
int f[MAX_N]={0};//粉丝数 
int vst[MAX_N][MAX_N]={{0}};//记录是否出现过 
int n,m;
int main()
{
	cin>>n>>m;
	int u,v;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		if(!vst[u][v])
		{
			g[u]++;
		    f[v]++;
		    vst[u][v]=1;
		}
		
	}
	for(int i=0;i<n;i++)
	{
		cout<<f[i]-g[i]<<endl; 
	}
	
	return 0;
}
/*
10 12
3 5
1 6
3 5
9 1
7 9
3 9
4 2
2 6
9 4
3 1
2 0
3 0
*/  

改进方法:可以只设置一个数组,被关注用++,关注用--,节省空间 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值