UVA 10763 Foreign Exchange

来源:互联网 发布:建筑设计软件 编辑:程序博客网 时间:2024/06/04 00:40

思路:

每一个想从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;}


原创粉丝点击