思路:
每一个想从A学校换到B学校的学生必须找到一个唯一的从B学校换到A学校的学生。可以定义一个arr[ ]数组作为AB的关系,并对每一对关系进行swap(arr[a],arr[b]),如果交换成功,最后的对于每一个 i,必有arr[ i ]= i。
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
const int maxn=500000+5;
int arr[maxn];
void init()
{
for(int i=0;i<maxn;++i)//必须这种格式,否则WA死你
arr[i]=i;
}
bool isok()
{
for(int i=0;i<maxn;++i)
if(arr[i]!=i)
return false;
return true;
}
int main()
{
int n;
while(cin>>n&&n)
{
init();
int a,b;
for(int i=0;i<n;++i)
{
cin>>a>>b;
swap(arr[a],arr[b]);
}
if(isok())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}