算法博大精深,我什么时候才能自己想出这种好办法呢???!!!
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int num[500001];
int main()
{
//freopen("in.txt","r",stdin);
int n,a,b;
while(scanf("%d",&n)!=EOF&&n)
{
for(int i=0; i<=500000; i++)
num[i]=i;
for(int i=0; i<n; i++)
{
scanf("%d%d",&a,&b);
int temp=num[a];
num[a]=num[b];
num[b]=temp;
}
int flag=0;
for(int i=0; i<=500000; i++)
if(num[i]!=i)
{
cout<<"NO"<<endl;
flag=1;
break;
}
if(!flag)
cout<<"YES"<<endl;
}
return 0;
}
参考网上的代码,主要就是输入a,b就交换a,b,最后判断一下Num数组和原来是否一样。