uva10763 - Foreign Exchange

原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1704

题意:有n(1<=n<=500000)个学生交换到其他学校,从A学校到B学校的学生必须找一个从B学校到A学校的搭档。如果每个都满足,学校同意交换。学生用A、B表示,你判断交换是否可以进行。

思路:因为限定了是其他学校,所以A和B就不能相等,就可以直接把A排序,把B排序。比较是否相同就行了。

#include
//#include
#include
#include
using namespace std;
const int maxn=500005;
int n,cnt,a[maxn],b[maxn];
bool judge(){
    sort(a,a+n);
    sort(b,b+n);
    for(int i=0;iif(a[i]!=b[i])
            return false;
    }
    return true;
}
int main(){
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while(scanf("%d",&n)==1&&n){
        for(int i=0;iscanf("%d%d",&a[i],&b[i]);
        }
        if(judge()){
            puts("YES");
        }
        else{
            puts("NO");
        }
    }
    return 0;
}

你可能感兴趣的:(算法竞赛入门经典第二版)