原题忘了
//这道题挺经典的,和水池问题有相像之处。。。
题目大概思路是给一个测试数据,里面有几组值,分别是每个字母之间有联系,
所以可以用二维数组将有联系的标记为1,然后在调用函数里面进行dps。。。。
#include <iostream> #include <cstring> using namespace std; bool Find; int n,m,flag[30],M[30][30]; void ss(int x,int y) { flag[x]=1; for(int i=0;i<=26;i++) { if(M[x][i]==1&&flag[i]==0) { //if后面有一个括号,当时忘记了加,想了很久。。。 if(i==y) {Find=true;return;} ss(i,y);} } //return Find; } int main() { //while(cin>>n>>m) cin>>n>>m; char x,y; memset(M,0,sizeof(M)); while(n--) { cin>>x>>y; M[x-'A'][y-'A']=1; M[y-'A'][x-'A']=1; } while(m--) { cin>>x>>y; memset(flag,0,sizeof(flag)); Find=false; ss(x-'A',y-'A'); if(Find==true) cout<<"Yes\n"; else cout<<"No\n"; } return 0; }