交换学生(Foreign Exchange ,UVa10763)

交换学生(Foreign Exchange ,UVa10763)

 

题目描述:

n1<=n<=500000)个学生想交换到其他学校学习

AB学校的前提是找到一个BA的搭档

n个学生两两两交换就okA,B用两个整数表示。

思路详解:

首先定义一个数组 d[ ] 存储每个学生本来的位置。当交换后,两个学生位置变换。

如果A想换到B,并且B想换到A,两两交换后,d[A]d[B]不变,也就是学生位置不变。否则,交换不可以进行。

代码:

#include 
#include 
#include 
using namespace std;
int d[500005];
void init()//初始化数组 
{
	int i;
	for(i=0;i<500005;i++)
	d[i]=i;
}

int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		int i,a,b,flag=0;//flag标记交换能不能进行 
		init();
		for(i=0;i

 

你可能感兴趣的:(UVA)