记录编号 284552 评测结果 AAAAAAAA
题目名称 骑马修栅栏 最终得分 100
用户昵称 GravatarHzoi_ 是否通过 通过
代码语言 C++ 运行时间 0.011 s
提交时间 2016-07-18 15:25:06 内存使用 2.19 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<queue>
#include<stack>
#include<map>
#include<fstream>
#include<sstream>
#define maxn 700
#define maxm 1030
#define max(a,b,c) max(a,max(b,c))
#define min(a,b,c) min(a,min(b,c))
#define COGS
using namespace std;
int m,st=0,ed=0,len;
int b[maxm*2]={0};
bool du[maxn]={0};
int a[maxn][maxn]={0};
int mx=0,mn=0x7fffffff;
int deep;
void dfs(const int&);
int main(){
#ifdef COGS
	freopen("fenceus.in","r",stdin);
	freopen("fenceus.out","w",stdout);
#endif
	scanf("%d",&m);
	len=m-1;
	for(int i=0;i<m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		a[x][y]++;
		a[y][x]++;
		du[x]=!du[x];
		du[y]=!du[y];
		mx=max(x,y,mx);
		mn=min(x,y,mn);
	}
	for(int i=mn;i<=mx;i++){
		if(du[i]){
			if(st){
				if(ed)break;
				ed=i;
			}
			else st=i;
		}
	}
	if(!st)st=ed=1;
	dfs(st);
	printf("%d\n",st);
	for(int i=0;i<m;i++)printf("%d\n",b[i]);
#ifdef COGS
	fclose(stdin);
	fclose(stdout);
#endif
	return 0;
}
inline void dfs(const int& x){
	for(int y=mn;y<=mx;y++)if(a[x][y]){
		a[x][y]--;
		a[y][x]--;
		dfs(y);
	}
	b[len--]=x;
}