简单欧拉回路。
代码:
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct e{
int data;
int num;
};
vector<e> a[51];
int v[51];
int vis[2000];
void solve(int s){
for(int i=0;i<a[s].size();i++)
{
if(vis[a[s][i].num]==0)
{
vis[a[s][i].num]=1;
solve(a[s][i].data);
cout<<a[s][i].num<<' ';
}
}
}
void read(){
// ifstream cin("in.txt");
int i,j,k,x,y,z;
while(cin>>x>>y){
if(x==0&&y==0)
return;
memset(v,0,sizeof(v));
memset(vis,0,sizeof(vis));
for(i=1;i<=50;i++)
a[i].clear();
k=min(x,y);
cin>>z;
v[x]++;
v[y]++;
e b;
b.data=y;
b.num=z;
a[x].push_back(b);
b.data=x;
a[y].push_back(b);
while(cin>>x>>y)
{
if(x==0&&y==0) break;
v[x]++;
v[y]++;
cin>>z;
e b;
b.data=y;
b.num=z;
a[x].push_back(b);
b.data=x;
a[y].push_back(b);
}
for(i=1;i<=50;i++)
if(v[i]%2)
{
cout<<"Round trip does not exist."<<endl;
break;
}
if(i<=50) continue;
solve(k);
cout<<endl;
}
}
int main(){
read();
return 0;
}