uva10763 简单做法

转载请注明出处,谢谢!

原文地址:

http://blog.csdn.net/monkeyduck

题意开始有点歧义,我以为只要方案可行即输出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"<



你可能感兴趣的:(uva解题报告,C++)