记录编号 |
284552 |
评测结果 |
AAAAAAAA |
题目名称 |
骑马修栅栏 |
最终得分 |
100 |
用户昵称 |
Hzoi_ |
是否通过 |
通过 |
代码语言 |
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;
}