我这种路径压缩真是错漏百出,没想到还a了,首先就是若果b对应多个值的话,我这个方法制定wa,说明他的测试数据都是一对一的
#include<iostream> using namespace std; char a[1000]; int b[30],vis[30]; int sign; int find(int t) { if(t=='m'-'a') sign=1; if(t!=b[t]&&vis[t]==0) { vis[t]=1; find(b[t]); } return 0; } int main() { for(int i=0;i<27;i++) { b[i]=i; } while(cin>>a) { int len=strlen(a); b[a[0]-'a']=a[len-1]-'a'; if(a[0]=='0') { int t='b'-'a'; sign=0; find(t); if(sign==1) printf("Yes.\n"); else printf("No.\n"); for(int i=0;i<27;i++) { b[i]=i; vis[i]=i; } } } return 0; }