koukis @ 2021-10-16 16:37:16
#include<iostream>
using namespace std;
int g[1005][1005];
int du[1005];
int m;
int n=0;
int bgin=1;
int path[1005];
int length;
void dfs(int v)
{
for(int i=1;i<=n;i++)
{
if(g[v][i]>0)
g[v][i]--;g[i][v]--;
}
path[length++]=v;
}
int main()
{
cin>>m;//m表示边的个数
for(int i=1;i<=m;i++)
{
int x;
int y;
cin>>x>>y;
if(i==1)
bgin=x;
g[x][y]++;
g[y][x]++;
du[x]++;
du[y]++;
bgin=min(bgin,min(x,y));
n=max(n,max(x,y));
}
int start=bgin;
for(int i=bgin;i<=n;i++)
{
if(du[i]%2==1)
{
start=i;
break;
}
}
dfs(start);
for(int i=length-1;i>=0;i--)
{
cout<<path[i]<<endl;
}
return 0;
}
by winsun @ 2022-01-26 16:41:33
看看你的代码:
void dfs(int v)
{
for(int i=1;i<=n;i++)
{
if(g[v][i]>0)
g[v][i]--;g[i][v]--;
}
path[length++]=v;
}
所以你不递归它干什么?
并且你这个if语句也有很大的问题,没有花括号。
修改:
void dfs(int v)
{
for(int i=1;i<=n;i++)
{
if(g[v][i]>0)
{
g[v][i]--;g[i][v]--;
dfs(i);
}
}
path[length++]=v;
}
by koukis @ 2022-01-27 11:00:42
@winsun 才看到啊
谢谢啦%%%%