uva10763 简单做法

2014-11-24 02:21:08 · 作者: · 浏览: 1

题意开始有点歧义,我以为只要方案可行即输出YES,就是在1 2,2 3,3 1这种方案的情况下应该是可以的。但是跑到网上去试验发现这种方法不行,因为题目要求就是两个
学生互换,A.X==B.Y&&B.X==A.Y才可以配对成功。所以想到用结构体,然后用链表存储,配对一对后即删除节点,知道最后没有节点就输出YES,否则输出NO。
可是担心时间超时,所以只是有了这么个思路,并没有动手 编程,想了想觉得可以有更简单的办法,即用邻接矩阵存储边,a—>b就意味着正向边加1,反向边减1,只有还
存在着b—>a的情况,才配对成功,此时map【a】【b】=map【b】【a】=0
#include
#include using namespace std; const int MAX = 1003; int map[MAX][MAX]; int n; bool is_ok() { for (int i=0;i>n&&n) { memset(map,0,sizeof(map)); for (int i=0;i>a>>b; map[a][b]++; map[b][a]--; } if (n%2==1) { cout<<"NO"<