记录编号 85089 评测结果 AAAAAAAAAA
题目名称 完全排序网络 最终得分 100
用户昵称 GravatarChenyao2333 是否通过 通过
代码语言 C++ 运行时间 0.113 s
提交时间 2013-12-26 22:38:05 内存使用 1.82 MiB
显示代码纯文本
#include<stdio.h>
#include<stdlib.h>

const int MAXN=100+10;
const int MAXM=200000+10;

inline void swap(int &a,int &b){
	int t=a;
	a=b;
	b=t;
}

int N,M;
int comp_a[MAXM]={0},comp_b[MAXM]={0};
int arr[MAXN]={0,100,0,101};

void read(){
	scanf("%d %d",&N,&M);
	for(int i=0;i<M;i++){
		scanf("%d %d",&comp_a[i],&comp_b[i]);
		if(comp_a[i]>comp_b[i])swap(comp_a[i],comp_b[i]);
	}
}

void rad(){
	for(int i=1;i<=N;i++){
		arr[i]=rand();
	}
}

void sort_(){
	for(int i=0;i<M;i++){
		int a=comp_a[i],b=comp_b[i];
		if(arr[a]<arr[b])swap(arr[a],arr[b]);
	}
}

bool check(){
	for(int i=1;i<N;i++){
		if(arr[i]<arr[i+1]){
			return false;
		}
	}
	return true;
}

bool solve(){
	for(int i=0;i<100;i++){
		rad();
		sort_();
		if(!check())return false;
	}
	return true;
}

void open(){
	freopen("sortingnet.in","r",stdin);
	freopen("sortingnet.out","w",stdout);
}

int main(){
	open();
	read();
	bool is_yes=solve();
	if(is_yes)printf("Yes!");
	else printf("No!");
	return 0;
}