UVA 10763
#include<stdio.h> #include<stdlib.h> #include<map> #include<string.h> using namespace std; int main(){ multimap<int,int> mapp; int n,a,b; while(scanf("%d",&n)==1&&n){ mapp.clear(); for(int i=0;i<n;i++){ scanf("%d%d",&a,&b); bool flag=true; multimap<int,int>::iterator it; for(it=mapp.find(b);it!=mapp.end()&&it->first==b;it++){ if(it->second==a){ flag=false; mapp.erase(it); break; } } if(flag==true) mapp.insert(make_pair(a, b)); } if(mapp.empty()) printf("YES\n"); else printf("NO\n"); } return 0; }
这道题一开始是用map做的,但是map要求key值唯一,不能对如:
4
1 2
1 2
2 1
2 1
这样的数据进行处理,但是 multimap 是允许多个key存在的。
关于multimap 以后要好好看看!!!
底层是红黑树什么的,不太懂。