1. 程式人生 > >UVA10763-交換生

UVA10763-交換生

題目大意:交換生,顧名思義,必須是有來有回才算交換。現在有若干個學生要申請交換生,判斷他們的能不能全部都找到交換物件。

即:判斷有向圖裡每個結點的入度和出度為零。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>

using namespace std;
int Case,x,y,opt[1000][1000];
bool solve()
{
    for(int i=0;i<1000;i++)
        for(int j=0;j<1000;j++)
            if(opt[i][j]!=0)
                return false;
    return true;
}
int main()
{
    while(cin>>Case&&Case!=0)
    {
        memset(opt,0,sizeof(opt));
        for(int i=1;i<=Case;i++)
        {
            cin>>x>>y;
            opt[x][y]++;
            opt[y][x]--;
        }
        if(solve())
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}