本地测#1正常输出,提交界面WA
查看原帖
本地测#1正常输出,提交界面WA
774854
qzmoot楼主2023/10/15 21:45
#include <bits/stdc++.h>
using namespace std;
const int N=257;
int n,deg[N],head,a[N][N],j,f[N],cnt,ji;
char ans[N*N];
void dfs(int u)
{
	for(int i=0;i<N;i++)
	{
		if(a[u][i])
		{
			a[u][i]=a[i][u]=0;
			dfs(i);
		}
	}
	ans[n--]=u;
}
int find(int x)
{
	return (f[x]==x)?x:f[x]=find(f[x]);
}
void merge(int x,int y)
{
	x=find(x),y=find(y);
	f[y]=x;
}
int main()
{
	scanf("%d",&n);
	getchar();
	for(int i=0;i<N;i++)
		f[i]=i;
	for(int i=1;i<=n;i++)
	{
		char u,v;
		scanf("%c%c",&u,&v);
		getchar();
		int x=int(u),y=int(v); 
		deg[x]++;
		deg[y]++;
		a[x][y]=1;
		a[y][x]=1;
		merge(x,y);
	}
	for(int i=0;i<N;i++)
		if(deg[i] && f[i]==i)
			cnt++;
	if(cnt!=1)
	{
		printf("No Solution \n");
		return 0;
	}
	for(int i=0;i<N;i++)
		if(deg[i]%2)
		{
			ji++;
			if(!head)
				head=i;
		}
	if(!head)
		for(int i=0;i<N;i++)
			if(deg[i])
			{
				head=i;
				break;
			}
	if(ji!=0 && ji!=2)
	{
		printf("No Solution \n");
		return 0;
	}
	dfs(head);
	puts(ans);
	return 0;
}
2023/10/15 21:45
加载中...