当前位置: 代码迷 >> 综合 >> UVA 10763 Foreign Exchange .
  详细解决方案

UVA 10763 Foreign Exchange .

热度:61   发布时间:2023-09-23 04:55:37.0

题目地址: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;
}


  相关解决方案