这是一道典型的欧拉回路的题,第一次做这种题,参考了一下别人的代码,结果WA了一晚上,最后照着别人的代码一步一步的改,最后才发现有存在x==y的情况
真是杯具,浪费了一晚上的时间


1
#include<iostream>
2
#include<algorithm>
3
using namespace std;
4
5
struct node
{
6
int v;
7
int str;
8
};
9
10
node dd[50][2000];
11
bool mark[2000];
12
int stack[2000];
13
int d[50];
14
int size;
15
int end;
16
17
18
void dfs(int k)
19

{
20
for(int i=1;i<=dd[k][0].v;i++)
{
21
if(!mark[dd[k][i].str])
{
22
mark[dd[k][i].str]=true;
23
dfs(dd[k][i].v);
24
stack[++size]=dd[k][i].str;
25
}
26
}
27
}
28
29
int main()
30

{
31
int x,y,z,start;
32
while(cin>>x>>y&&y)
{
33
memset(mark,false,sizeof(mark));
34
memset(stack,0,sizeof(stack));
35
memset(d,0,sizeof(d));
36
size=0;
37
start=x,end=x;
38
39
start=min(x,start);
40
41
end=max(x,end);
42
43
for(int i=0;i<50;i++)
44
dd[i][0].v=0;
45
do
{
46
end=max(end,x);
47
end=max(end,y);
48
cin>>z;
49
d[x]++;
50
d[y]++;
51
52
dd[x][0].v++;
53
dd[x][dd[x][0].v].v=y;
54
dd[x][dd[x][0].v].str=z;
55
56
dd[y][0].v++;
57
dd[y][dd[y][0].v].v=x;
58
dd[y][dd[y][0].v].str=z;
59
}while(cin>>x>>y&&y);
60
bool flag=false;
61
for(int i=1;i<=end;i++)
62
if(d[i]%2) flag=true;
63
if(flag) printf("Round trip does not exist.\n");
64
else
{
65
dfs(start);
66
67
for(int i=size;i>0;i--)
68
printf("%d ",stack[i]);
69
putchar('\n');
70
}
71
}
72
return 0;
74
}
75
76