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