问题描述
p10763原题链接:UVaOJ 10763 - Foreign Exchange
相关说明:本题为《算法竞赛入门经典(第2版)》习题 5-4
解法一:集合(带重复元素)
由于可能存在重复的匹配对,所以要用 multiset 来统计,在匹配到的时候记得按情况清理 key 即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <bits/stdc++.h> using namespace std; int main() { int n, a, b; while (cin >> n && n) { map<int, multiset<int>> mem; while (n--) { cin >> a >> b; if (mem.find(b) != mem.end() && mem[b].find(a) != mem[b].end()) { mem[b].erase(mem[b].find(a)); if (mem[b].size() == 0) mem.erase(b); } else { mem[a].insert(b); } } cout << (mem.size() ? "NO" : "YES") << endl; } return 0; } |
1 |
#TODO |