代码如下 code
#include <bits/stdc++.h>
using namespace std;
int n;
string s;
int main(){
cin>>n;
for(int jinge=1;jinge<=n;jinge++){
cin>>s;
int len=s.length();
int cnt[30]={0},mmm=0;
int c[30][30]={0};
bool a[30][30]={{0}};
bool bfsbian[30]={0};
bool sss[30]={0};
for(int i=0;i<len-1;i++){
a[s[i]-'a'+1][s[i+1]-'a'+1]=1;
a[s[i+1]-'a'+1][s[i]-'a'+1]=1;
if(!sss[s[i]-'a'+1]){
mmm++;
}
if(!sss[s[i+1]-'a'+1]){
mmm++;
}
sss[s[i]-'a'+1]=1;
sss[s[i+1]-'a'+1]=1;
}
int liang=0,yi=0;
bool book=0;
for(int i=1;i<=26;i++){
int sum=0;
for(int j=1;j<=26;j++){
if(a[i][j]){
sum++;
c[i][0]++;
c[i][c[i][0]]=j;
}
}
cnt[i]=sum;
if(sum>=3){
cout<<"NO"<<endl;
book=1;
break;
}else if(sum==1){
yi++;
}else if(sum==2){
liang++;
}
}
if(book){
continue;
}
if(yi==0){
cout<<"NO"<<endl;
continue;
}
queue<int> q;
for(int i=26;i>=1;i--){
if(cnt[i]==1){
q.push(i);
break;
}
}
int mmmm=0;
char ansans[30]={},cntcnt=0;
while(!q.empty()){
int k=q.front();
bfsbian[k]=1;
mmmm++;
q.pop();
cntcnt++;
ansans[cntcnt]=char(k+'a'-1);
for(int i=1;i<=c[k][0];i++){
if(!bfsbian[c[k][i]]){
q.push(c[k][i]);
}
}
}
if(mmmm!=mmm){
cout<<"NO"<<endl;
continue;
}
cout<<"YES"<<endl;
for(int i=1;i<=cntcnt;i++){
cout<<ansans[i];
}
for(int i=1;i<=26;i++){
if(cnt[i]==0){
cout<<char(i+'a'-1);
}
}
cout<<endl;
}
return 0;
}
请问哪里错了?