这道题很水,以为会和匈牙利算法有点关系,然而2333.
一开始想用map,但是想到取键值要用到 lower_bound() 和upper_bound() ,我不怎么熟练,而且学长说stl在acm中不常用,于是决定换一种方法。
思路是这样的,定义一个二维数组,一边输入一边存储。
注意把数组开在主函数外面2333.
#include<iostream>
#include<string>
#include<queue>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<map>
#include<vector>
#include<queue>
#define maxn 10010
using namespace std;
int n,i,mp[1010][1010];
int x,y;
int main()
{
while(scanf("%d",&n)!=EOF &&n)
{
memset(mp,0,sizeof(mp));
while(n--)
{
scanf("%d%d",&x,&y);
++mp[x][y];--mp[y][x];
}
int *p=mp[0];
for(i=0;i<102010;++p,++i)
if(*p!=0) break;
if(i<102010) printf("NO\n");
else printf("YES\n");
}
return 0;
}