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 以后要好好看看!!!

底层是红黑树什么的,不太懂。

posted @ 2015-12-21 16:13  咸咸的告别  阅读(138)  评论(0编辑  收藏  举报