寻找坐标的配对。所给坐标x y 一定有 y x与其对应。否则输出NO。可以用图的思想,用邻接表存放边正向和反向的的情况,并且一定要保证没有重复边。如果有与之相同的正向边
则自加1.相反边则减1.最后遍历所有情况。!= 0 return 0, 反之 return 1
// File Name: UVa10763.cpp
// Author: Toy
// Created Time: 2013年04月17日 星期三 12时21分03秒
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cctype>
#include <cmath>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <iomanip>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <utility>
#include <bitset>
#define L(x) x << 1
#define R(x) x << 1 | 1
using namespace std;
int Case, x, y, opt[1000][1000];
int solve ( ) {
for ( int i = 0; i < 1000; ++i )
for ( int j = 0; j < 1000; ++j )
if ( opt[i][j] != 0 ) return 0;
return 1;
}
int main ( ) {
while ( cin >> Case && Case ) {
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;
}