社区讨论
被安排的不明不白
P1341无序字母对参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mi6uy1le
- 此快照首次捕获于
- 2025/11/20 11:14 4 个月前
- 此快照最后确认于
- 2025/11/20 11:14 4 个月前
下的数据弄出来都是对的呀qwq为什么wa完了
这种字符真的烦呀!不知道怎么死的qnq
求大佬们帮忙qaq
CPP#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#define maxn 60
using namespace std;
int n,tot,cnt,ans[maxn<<2],deg[maxn];
bool flag,vis[maxn],edge[maxn][maxn];
stack<int> s;
bool dfs(int x)
{
s.push(x);
for(int i=1;i<=52;++i)
if(edge[x][i])
edge[x][i]=edge[i][x]=false,dfs(i);
}
void print()
{
int sz=s.size();
while(!s.empty()) ans[s.size()]=s.top(),s.pop();
for(int i=1;i<=sz;++i)
{
char ch;
if(ans[i]>=1&&ans[i]<=26)ch=ans[i]+'A'-1;
if(ans[i]>=27&&ans[i]<=52)ch=ans[i]+'a'-27;
printf("%c",ch);
}
puts("");
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
int m=2,d[2];char ch[3];
scanf("%s",ch);
while(m--)
{
if(ch[m]>='A'&&ch[m]<='Z')d[m]=ch[m]-'A'+1;
if(ch[m]>='a'&&ch[m]<='z')d[m]=ch[m]-'a'+27;
}
edge[d[0]][d[1]]=edge[d[1]][d[0]]=true;
deg[d[0]]++;deg[d[1]]++;
}
for(int i;i<=52;++i)
if(deg[i]%2)cnt++;
if(cnt!=0&&cnt!=2)
{
puts("No Solution");
return 0;
}
for(int i=1;i<=52;++i)
if(deg[i]){dfs(i);break;}
print();
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...