您的位置:首页 > 其它

UVA 10763 Foreign Exchange .

2016-11-09 18:06 323 查看
题目地址:http://vjudge.net/problem/UVA-10763

题目明显是 A到B要找个B到A的学生

3

1 2

2 3

3 1

案例按理说是错的,但却能AC,就是按出入度记录(只要成环就是对的)

思路:A->B的学生数量和B->A的学生数量要一样

#include <bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)
#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)
map<pair<int,int> ,int> cnt;
int x[500000+5],y[500000+5];
bool solve(int n){
REP(i,1,n) if(cnt[make_pair(x[i],y[i])]!=cnt[make_pair(y[i],x[i])]) return false;
return true;
}
int main(int argc, char const *argv[])
{
int n;
while(scanf("%d",&n)==1&&n){
int s1,s2;
cnt.clear();
REP(i,1,n) {
scanf("%d%d",&s1,&s2);
x[i]=s1,y[i]=s2;
cnt[make_pair(s1,s2)]++;
}
printf("%s\n", solve(n)?"YES":"NO");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: