#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
bool g[26][26];
bool used[26];
bool DFS(int i)
{
used[1] = true;
for(int j = 0; j < 26; j++)
{
if(i != j && !used[j] && g[i][j])
{
if(i != 1) g[1][j] = true;
used[j] = true;
DFS(j);
}
}
return g[1][12];
}
int main()
{
// freopen("in.txt","r",stdin);
char s[100];
while(cin >> s)
{
if(s[0] != '0')
{
int len = strlen(s);
g[s[0] - 'a'][s[len -1] - 'a'] = true;
continue;
}
if(DFS(1)) printf("Yes.\n");
else printf("No.\n");
memset(g,false,sizeof(g));
memset(used,false,sizeof(used));
}
return 0;
#include <stdio.h>
#include <cstring>
using namespace std;
bool g[26][26];
bool used[26];
bool DFS(int i)
{
used[1] = true;
for(int j = 0; j < 26; j++)
{
if(i != j && !used[j] && g[i][j])
{
if(i != 1) g[1][j] = true;
used[j] = true;
DFS(j);
}
}
return g[1][12];
}
int main()
{
// freopen("in.txt","r",stdin);
char s[100];
while(cin >> s)
{
if(s[0] != '0')
{
int len = strlen(s);
g[s[0] - 'a'][s[len -1] - 'a'] = true;
continue;
}
if(DFS(1)) printf("Yes.\n");
else printf("No.\n");
memset(g,false,sizeof(g));
memset(used,false,sizeof(used));
}
return 0;
}
心得:题解http://blog.csdn.net/guodongxiaren/article/details/36692481?utm_source=tuicool&utm_medium=referral,这思路太精辟了,dfs的活用啊,具体思路我也不说了,反正我是看懂了= =