P1341 40pts 求调
查看原帖
P1341 40pts 求调
877908
liukezhang楼主2023/12/3 17:00

P1341

code:

#include<bits/stdc++.h>
using namespace std;
const int N=257,NN=1e5+7;
vector<int> g[N];
char s[NN];
int d[N],n,cnt=0;
bool p[N],book[N][N];
inline void dfs(int u)
{
	for(int i=0;i<g[u].size();i++)
	{
		if (book[u][g[u][i]])
		{
			book[u][g[u][i]]=book[g[u][i]][u]=false;
			dfs(g[u][i]);
		}
	}
	s[n--]=u;
	return;
}
int main(void)
{
	int fa=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		char u,v;
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
		p[u]=p[v]=book[u][v]=book[v][u]=true;
		d[u]++;
		d[v]++;
	}
	for(int i=65;i<=122;i++)
	{
		if (d[i]%2==1)
		{
			cnt++;
			if (!fa)
			{
				fa=i;
			}
		}
	}
	if (cnt && cnt!=2)
	{
		cout<<"No Solution";
		return 0;
	}
	if (!fa)
	{
		for(int i=65;i<=122;i++)
		{
			if (d[i])
			{
				fa=i;
				break;
			}
		} 
	}
	dfs(fa);
	puts(s);
	return 0;
}

蒟蒻求助~

2023/12/3 17:00
加载中...