UVA10763

菜鸡退役人来水黄了……

(sf{Solution})

搞不懂为什么要排序,这不是两个数组直接模拟的数数题吗。

读入后,对于每个学生,令他要去的学校以及他现在所在学校人数对应加一,再 check 一下所有学校人数是否能配对,就完事了。最后, uva 多测不清两行泪啊。

(sf{Code})

#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm>
using namespace std;
int go[5000005],back[5000005];
int n,a,b;
bool check()
{
	for(int i=1;i<=5000000;++i)
		if(go[i]!=back[i])//检查是否匹配
			return false;
	return true;
}
int main()
{
	while(scanf("%d",&n)&&n!=0)
	{
		memset(go,0,sizeof(go));
		memset(back,0,sizeof(back));//清空!!1
		for(int i=1;i<=n;++i)
			scanf("%d%d",&a,&b),go[a]++,back[b]++;//记录来去情况
		if(check())
			printf("YES
");
		else printf("NO
");
	}
	return 0;
}
原文地址:https://www.cnblogs.com/CM-0728/p/15128316.html