UVA10763:Foreign Exchange(交换学生)

    xiaoxiao2021-03-26  11

    作者:xq的acm之路

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

    题目大意:有n(1<=n<=500000)个学生想交换到其他学校学习。A到B学校的前提是找到一个B到A的搭档。n个学生两两两交换就ok,A,B用两个整数表示

    思路:(A,B)和(B,A)两两交换,可以用数组a存起来,那么(a[A][B]++,a[B][A]–),(a[B][A]++,a[A][B]–)运算后就是0,最后如果可以交换那么数组a全是0。

    代码如下:

    #include <iostream> #include <cstring> using namespace std; int s[1000][1000]; bool if_ok() { for(int i=0; i<1000; i++) { for(int j=0; j<1000; j++) { if(s[i][j]!=0) return 0; } } return 1; } int main() { int n,a,b; while(cin>>n&&n) { memset(s,0,sizeof(s)); for(int i=0; i<n; i++) { cin>>a>>b; s[a][b]++; s[b][a]--; } if(n%2==1) { cout<<"NO"<<endl; } else { if(if_ok()) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-650217.html

    最新回复(0)