题目链接: Foreign Exchange UVA - 10763
题目大意:
给出交换学生的原先国家和所去的国家,交换成功的条件是如果A国给B国一个学生,对应的B国也必须给A国一个学生,否则就是交换失败。
分析:一个学生有一组数据,使用pair比较简单。使用map存储学生,输入一个学生,则将学生对应交换的学生也列出,如交换的存在则,交换的-1,最后判断是否为0即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("i.txt","r",stdin);
int a,b,n;
while(cin >> n && n) {
map<pair<int, int>, int> m;
bool flag = true;
int t = n;
while(t--) {
cin >> a >> b;
pair<int, int> s = make_pair(a,b);
pair<int, int> rs = make_pair(b,a);
if(m.count(s)) m[s]++;
else if(m.count(rs)) m[rs]--;
else m[s] = 1;
}
for(auto it=m.begin(); it!=m.end(); it++) {
if(it->second) {
cout << "NO" << endl;
flag = false;
break;
}
}
if(flag) cout << "YES" << endl;
}
return 0;
}