链接
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3255
题解
代码
//置换
#include <bits/stdc++.h>
#define maxn 100
#define cl(x) memset(x,0,sizeof(x))
using namespace std;
char f[maxn], a[maxn], cnt[maxn], vis[maxn];
int main()
{
int i, j, T, l;
scanf("%d",&T);
for(i=1;i<=26;i++)a[i]=i;
while(T--)
{
scanf("%s",f+1);
for(i=1;i<=26;i++)f[i]-='A'-1;
cl(cnt), cl(vis);
for(i=1;i<=26;i++)
{
if(vis[i])continue;
vis[i]=1;
l=1;
for(j=f[i];j!=i;j=f[j])vis[j]=1, l++;
cnt[l]++;
}
for(i=2;i<=26;i+=2)
if(cnt[i]&1)
{
printf("No\n");
break;
}
if(i>26)printf("Yes\n");
}
return 0;
}