rt,有哪位大佬可以帮忙看眼的awa
AC on #1~9
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> graph[100];
bool vis[100];
bool vis2[100];
int ans=0;
int cnt=0;
bool flag2=0;
void dfs(int c, int start){
if(c==start and vis[c]){
ans++;
flag2=1;
}
if(graph[c].size()==0 or vis[c]) return;
vis[c]=1;
if(graph[c][0]!=start){
ans++;
dfs(graph[c][0],start);
}
else if(graph[c][0]==start){
ans++;
dfs(start,start);
return;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--){
flag2=0;
cnt=0;
vector<int> all;
vector<int> all2[100];
vector<int> all3[100];
memset(vis,0,sizeof(vis));
memset(vis2,0,sizeof(vis2));
for(int i=1;i<=58;i++){
graph[i].clear();
}
string a, b;
cin>>a>>b;
bool flag=0;
if(a==b){
cout<<0<<endl;
continue;
}
for(int i=0;i<a.length();i++){
int letter1=a[i]-'A'+1,letter2=b[i]-'A'+1;
for(int j=0;j<all2[letter1].size();j++){
if(all2[letter1][j]!=letter2) flag=1;
}
if(flag) break;
else all2[letter1].push_back(letter2);
}
if(flag){
cout<<-1<<endl;
continue;
}
for(int i=0;i<a.length();i++){
int letter1=a[i]-'A'+1,letter2=b[i]-'A'+1;
if(!vis2[letter1]){
cnt++;
vis2[letter1]=1;
}
if(letter1!=letter2){
graph[letter1].push_back(letter2);
all3[letter2].push_back(letter1);
all.push_back(letter1);
}
}
for(int i=0;i<all.size();i++){
int letter1=all[i];
if(!vis[letter1] and graph[letter1].size()!=0 and all3[letter1].size()==0) dfs(letter1,letter1);
}
for(int i=0;i<all.size();i++){
int letter1=all[i];
if(!vis[letter1] and graph[letter1].size()!=0) dfs(letter1,letter1);
}
if(flag2 and cnt==52){
cout<<-1<<endl;
continue;
}
cout<<ans<<endl;
ans=0;
}
return 0;
}