so_find_skind @ 2023-01-30 11:09:18
rt,把#8数据下载了一下发现输出没啥问题为什么会 WA啊。
代码:
#include<bits/stdc++.h>
using namespace std;
int m,n,g[505][505],d[505],ans[505],cnt;
void dfs(int p){
for(int i=1;i<=n;i++){
if(g[p][i]){
g[p][i]--;
g[i][p]--;
dfs(i);
}
}
ans[++cnt]=p;
}
int main(){
cin>>m;
for(int i=1,u,v;i<=m;i++){
cin>>u>>v;
g[u][v]++;
g[v][u]++;
n=max(n,u);
n=max(n,v);
d[u]++;
d[v]++;
}
int st=1;
for(int i=1;i<=n;i++){
if(d[i]%2){
st=i;
break;
}
}
dfs(st);
for(int i=cnt;i>=1;i--)
cout<<ans[i]<<"\n";
return 0;
}
by hzoi_Shadow @ 2023-01-30 11:17:35
#include<bits/stdc++.h>
using namespace std;
int n=0,m,g[501][501],dis[501],path[9999],beginn=0x3f3f3f3f,cnt=0;
void dfs(int i)
{
int j;
for(j=beginn;j<=n;j++)
{
if(g[i][j]!=0)
{
g[i][j]--;
g[j][i]--;
dfs(j);
}
}
path[cnt]=i;
cnt++;
}
int main()
{
int i,x,y,start,sum=0;
cin>>m;
for(i=1;i<=m;i++)
{
cin>>x>>y;
g[x][y]++;
g[y][x]++;
dis[x]++;
dis[y]++;
n=max(n,max(x,y));
beginn=min(beginn,min(x,y));
}
start=beginn;
for(i=beginn;i<=n;i++)
{
if(dis[i]%2==1)
{
sum++;
if(sum==1)
{
start=i;
}
}
}
dfs(start);
for(i=cnt-1;i>=0;i--)
{
cout<<path[i]<<endl;
}
return 0;
}
by _ChongYun_ @ 2023-01-30 11:26:17
#include<bits/stdc++.h>
using namespace std;
long long m,u,v,l;
long long d[114514];
long long ans[114514];
long long a[1555][1555];
void dfs(int x){
for(int i=1;i<=500;i++){
if(a[x][i]>=1){
a[x][i]--;
a[i][x]--;
dfs(i);
}
}
ans[++l]=x;
}
int main(){
cin>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
a[u][v]++;
a[v][u]++;
d[u]++,d[v]++;
}
int start=1;
for(int i=1;i<=500;i++){
if(d[i]%2==1){
start=i;
break;
}
}
dfs(start);
for(int i=l;i>=1;i--){
cout<<ans[i]<<endl;
}
return 0;
}
by so_find_skind @ 2023-01-30 12:14:53
@oHAMBURGERo
@The_Shadow_Dragon
感谢两位大佬
by hzoi_Shadow @ 2023-01-30 13:53:43
@zhezhikongdanruxue 不用谢