wwvwwei @ 2017-03-17 17:47:16
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct edge
{
int u;
int v;
}e[2000];
bool vis[5000];
int dis[5000];
vector<int>p[501];
int a[501];
int n,m,fi;
int than;
bool cmp(int x,int y)
{
int p,q;
if(e[x].u==than)
{
p=e[x].v;
}
else p=e[x].u;
if(e[y].u==than)
{
q=e[y].v;
}
else q=e[y].u;
return p<q;
}
void dfs(int x,int k)
{
int i;
dis[k]=x;
if(k==m)
{
fi=1;
return;
}
for(i=0;i<p[x].size();i++)
{
if(!vis[p[x][i]])
{
vis[p[x][i]]=true;
if(x==e[p[x][i]].u)
{
dfs(e[p[x][i]].v,k+1);
}
else
{
dfs(e[p[x][i]].u,k+1);
}
vis[p[x][i]]=false;
if(fi==1) return;
}
}
}
int main()
{
int i,j,t=0;
cin>>m;
for(i=1;i<=m;i++)
{
cin>>e[i].u>>e[i].v;
a[e[i].u]++;
a[e[i].v]++;
p[e[i].u].push_back(i);
p[e[i].v].push_back(i);
}
for(i=1;i<=500;i++)
{
than=i;
sort(p[i].begin(),p[i].end(),cmp);
}
for(i=1;i<=500;i++)
{
if(a[i]%2==1)
{
t=1;
dfs(i,0);
for(j=0;j<m+1;j++)
{
cout<<dis[j]<<endl;
}
break;
}
}
if(t==0)
{
dfs(1,0);
i=1;
for(j=0;j<m+1;j++)
{
cout<<dis[j]<<endl;
}
}
return 0;
}
/*5 1 2 2 3 3 4 4 1 4 2*/
by 飞奔的蜗牛 @ 2017-04-27 21:07:27
人品原因,呵呵呵呵
by 飞奔的蜗牛 @ 2017-04-27 21:07:53
kkk,我错了,下次再也不敢了!