记录编号 87935 评测结果 AAAAAAAA
题目名称 骑马修栅栏 最终得分 100
用户昵称 GravatarNeal 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2014-02-12 13:56:20 内存使用 1.27 MiB
显示代码纯文本
#include<cstdio>
#include<cstdlib>
using namespace std;
FILE* fin=fopen("fenceus.in","r");
FILE* fout=fopen("fenceus.out","w");
int f,x=0;
int link[505][505];
int a[505],deg[505];
int minval=500,maxval=1;
void dfs(int p){
	int i;
	for(i=minval;i<=maxval;i++){
		if(link[p][i]){
			link[p][i]--;
			link[i][p]--;
			dfs(i);
		}
	}
	a[++x]=p;
}
int main(){
	int i,j,k;
	fscanf(fin,"%d",&f);
	for(k=1;k<=f;k++){
		fscanf(fin,"%d%d",&i,&j);
		link[i][j]++;
		link[j][i]++;
		deg[i]++;
		deg[j]++;
		if(maxval<i) maxval=i;
		if(maxval<j) maxval=j;
		if(minval>i) minval=i;
		if(minval>j) minval=j;
	}
	for(k=minval;k<=maxval;k++){
		if(deg[k]%2==1){
			dfs(k);
			break;
		}
	}
	if(k>maxval) dfs(minval);
	for(i=x;i>=1;i--) fprintf(fout,"%d ",a[i]);
	fclose(fin);
	fclose(fout);
	return 0;
}