www.pudn.com > zju_1000_1010.rar > 1006.cpp


//1212 2003-06-07 15:34:48 Wrong Answer 1006 C++ 00:00:03 380K just for play  
//1263 2003-06-07 15:43:15 Wrong Answer 1006 C++ 00:00:02 380K just for play  
#include 
#include 
 
int main() 
{ 
	int n,m; 
	while(scanf("%d %d",&n,&m)!=EOF) 
	{ 
		int father[16]; 
		memset(father,0xff,sizeof(father)); 
		int i,t; 
		for(i=0;imax){t=min;min=max;max=t;} 
			int mint=min,maxt=max;			 
			while(mint!=-1) 
			{ 
				maxt=max;				 
				while(maxt!=-1&&maxt!=mint)				 
					maxt=father[maxt];				 
				if(maxt==mint) 
				{ 
					father[max]=min; 
					if(mint!=min)	father[min]=mint; 
					break; 
				}				 
				mint=father[mint]; 
				 
			} 
			if(mint==-1) 
			{ 
				father[max]=min; 
				father[min]=-1; 
			} 
		} 
 
//		for(i=1;i<=n;i++) 
//			printf("%d  --  %d\n",i,father[i]); 
		for(i=2;i<=n;i++) 
			if(father[i]!=i-1)	break; 
		if(i<=n)	printf("NO\n"); 
		else	printf("YES\n"); 
	} 
	return 0; 
}