int g[510][510];
stack<int> s;
int d[510];
void euler(int u)
{
for(int v=1; v<=500; v++)
{
if(g[u][v])
{
g[u][v]--;
g[v][u]--;
euler(v);
s.push(v);
}
}
}
int main()
{
int u,v;
int n;
cin>>n>>m;// 点,边
for(int i=1; i<=m; i++)
{
cin>>u>>v;
g[u][v]++;
g[v][u]++;
d[u]++;
d[v]++;
}
int flag=1;
int cnt=0;
for(int i=n; i>=1; i--)
if(d[i]%2)
{
flag=i;
cnt++;
}
if(cnt>2)
{
cout<<"No Euler"<<endl;
return 0;
}
euler(flag);
s.push(flag);
while(!s.empty())
{
cout<<s.top()<<endl;
s.pop();
}
}
来源:https://blog.csdn.net/weixin_43627118/article/details/102775433