求助,不知道哪错了
查看原帖
求助,不知道哪错了
772478
Wisdom_chicken_god楼主2023/7/21 15:03
#include<bits/stdc++.h>
#define N 3005
using namespace std;
long long n,f[N][N],du[N],num,id;
long long mix=888,man,way[N],way_num;
int c;
void dfs(long long x)
{
	for(int i=mix;i<=man;i++)
	{
		if(f[x][i]>0)
		{
			f[x][i]--;
			f[i][x]--;
			dfs(i);
		}
	}
	way[++way_num]=x;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		char a,b;
		a=getchar();
		b=getchar();
		getchar();
		long long x=int(a),y=int(b);
		f[x][y]++;
		f[y][x]++;
		du[x]++;
		du[y]++;
		mix=min(mix,min(x,y));
		man=max(man,max(x,y));
	}
	for(int i=mix;i<=man;i++)
	{
		if(du[i]%2==1)
		{
			num++;
			id=i;
		}
	}
	if(num==2)
	{
		dfs(id);
	}
	else if(num==0)
	{
		dfs(mix);
	}
	else if(num!=0&&num!=2)
	{
		printf("No Solution");
		return 0;
	}
	if(way_num!=n+1)
	{
		printf("No Solution");
		return 0;
	}
	for(int i=way_num;i>=1;i--)
	{
		printf("%c",char(way[i]));
	}
	return 0;
}
2023/7/21 15:03
加载中...