思路:
并查集的题,用dfs做的,深搜首字母
注意数据结构,保存字符串的首尾字母即可,最初保存整个字符串,结果memory limit
并查集的题,用dfs做的,深搜首字母
注意数据结构,保存字符串的首尾字母即可,最初保存整个字符串,结果memory limit
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
struct st{
char f,e;
}arr[10000];
bool mar[10000]={0};
void dfs(char);
int mark = 0;
int main()
{
string str;
while(cin>>str){
mark = 0;
memset(arr,0,sizeof(arr));
memset(mar,0,sizeof(mar));
if(str == "0")continue;
else if(str.begin() != str.end()){
arr[0].f=str[0];
arr[0].e=str[str.size()-1];
}
int ma = 0,i = 0;
while(cin>>str){
++i;
if(str == "0"){
ma = 1;break;
}
else if(str.begin() != str.end()){
arr[i].f=str[0];
arr[i].e=str[str.size()-1];
}
}
dfs('b');
if(mark)cout<<"Yes.\n";
else cout<<"No.\n";
if(ma == 1)continue;
}
return 0;
}
void dfs(char ch){
if( ch== 'm'){
mark = 1;return ;
}
int i=0;
for(st s:arr){
if(s.f == ch && mar[i] == 0){
mar[i] = 1;
dfs(s.e);
if(mark)return ;
mar[i] = 0;
}
i++;
}
}