最后两个RE求助qwq
查看原帖
最后两个RE求助qwq
400429
天天写点代码楼主2021/2/24 10:43

应该不是空间问题

#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;
}
2021/2/24 10:43
加载中...