题意:
给你N组关系,每组关系是a,b,最后问你所有的a,b出现的次数和所有的b,a出现的此时是否全部都一样。
思路:
水题,直接开了个二维的map标记,map<int ,map<int ,int> >mark,最后在检查一遍是否所有的mark[a][b] == mark[b][a],就ok了。
#include<map>
#include<stdio.h>
using namespace std;
map<int ,map<int ,int> >mark;
int edge[500005][2];
int main ()
{
int n ,i;
while(~scanf("%d" ,&n) && n)
{
mark.clear();
for(i = 1 ;i <= n ;i ++)
{
scanf("%d %d" ,&edge[i][0] ,&edge[i][1]);
mark[edge[i][0]][edge[i][1]] ++;
}
int mk = 0;
for(i = 1 ;i <= n && !mk;i ++)
if(mark[edge[i][0]][edge[i][1]] != mark[edge[i][1]][edge[i][0]])
mk = 1;
!mk ? printf("YES
") : printf("NO
");
}
return 0;
}