玄学求调
  • 板块学术版
  • 楼主_WangZhongYv_
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/31 14:59
  • 上次更新2025/7/31 18:54:26
查看原帖
玄学求调
1345326
_WangZhongYv_楼主2025/7/31 14:59

90pts

#include<bits/stdc++.h>
#define inf 505
using namespace std;
int m;
int mapp[inf][inf];
int cans[inf];
int start,endd;
int du[inf];
int cnt;
int zhan[999999];
int minn=2147483640;
int maxx=-1;
inline void dfs(int x)
{
	for(int i=1;i<=maxx;i++)
	{
		if(mapp[x][i]>0)
		{
			mapp[x][i]--;
			mapp[i][x]--;
			dfs(i);
		}
	}
	cnt++;
	zhan[cnt]=x;
}
bool tong[300];
int gu;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		char a,b;
		cin>>a>>b;
		int x,y;
		x=int(a);
		y=int(b);
		minn=min(min(x,y),minn);
		maxx=max(max(x,y),maxx);
		mapp[x][y]++;
		mapp[y][x]++;
		du[x]++;
		du[y]++;
	}
	for(int i=1;i<=maxx;i++)
	{
		if(du[i]%2==1 && start==0){
			start=i;
			break;
		}
	}
	if(start==0){
		gu=m-1;
		start=minn;
	}
	else gu=m;
	
	dfs(start);
	if(gu==cnt)
	{
		cout<<"No Solution";
		return 0;
	}
	for(int i=cnt;i>=1;i--)
	{
		if(zhan[i]!=32) cout<<char(zhan[i]);
	}
}

玄关

2025/7/31 14:59
加载中...