天天写点代码 @ 2021-02-24 10:43:00
应该不是空间问题
#include<bits/stdc++.h>
using namespace std;
int g[505][505];
int path[1026];
int du[505];
int f,flag=1;
int min0=1000,min1=1000,min2=1000;
int max0,max1;
void print()
{ for(int i=1;i<=f+1;i++)
cout<<path[i]<<endl;
}
void dfs(int i,int step)
{ if(flag)
{ path[step]=i;//问题可能在这???
if(step==f+1)
{ print();
flag=0;
return ;
}
for(int j=1;i<=max0&&flag;j++)
if(g[i][j])
{ g[i][j]--;
g[j][i]--;
dfs(j,step+1);
}
}
return ;
}
int main()
{ cin>>f;
for(int i=1;i<=f;i++)
{ int x,y;
cin>>x>>y;
if(x<y) min1=x;
else min1=y;
if(min0>min1) min0=min1;
g[x][y]++;
g[y][x]++;
du[x]++;du[y]++;
max0=max(max0,max(x,y));
}
for(int i=1;i<=500;i++)
if(du[i]%2==1)
if(min2>i)
{ min2=i;
break;
}
if(min2!=1000) dfs(min2,1);
else dfs(min0,1);
return 0;
}
by Emptyhanded @ 2021-02-24 10:44:48
不晓得
by 天天写点代码 @ 2021-02-25 21:06:12
@牛子睿ovo 不知道
by winsun @ 2022-01-26 16:49:41
这组数据卡了你的代码:
4
1 2
1 3
1 4
3 4
这个dfs似乎不是你这么写的,可以参考题解。