基础深搜题。
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1000;
int flag;
int vis[MAXN]; //访问情况
int mp[MAXN][MAXN]; //单词首尾对应情况
//深搜
void dfs(int x)
{
if (x == 'm')
{
flag = 1;
return;
}
for (int i = 'a'; i <= 'z'; i++)
{
if (mp[x][i] == 1 && vis[i] == 0)
{
vis[i] = 1;
dfs(i);
}
}
}
int main()
{
flag = 0;
memset(vis, 0, sizeof(vis));
memset(mp, 0, sizeof(mp));
string s;
while (cin >> s)
{
if (s[0] == '0')
{
dfs('b');
if (flag == 1)
cout << "Yes." << endl;
else
cout << "No." << endl;
flag = 0;
memset(vis, 0, sizeof(vis));
memset(mp, 0, sizeof(mp));
continue;
}
int len = s.size();
mp[s[0]][s[len - 1]] = 1;
}
}
继续加油。