题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181
很水的搜索题,结果提交错了,输入控制的锅。
AC代码:
#include <iostream>
#include <stdio.h>
#include <queue>
#include <string.h>
#include <vector>
using namespace std;
///四个搜索方向上右下左
int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};
const int s = 'b'-'a';
const int e = 'm'-'a';
vector<int>node[30];
char str[10000];
int vis[30];
bool bfs()
{
int u,v;
vis[s] = 1;
queue<int>qu;
qu.push(s);
while(!qu.empty())
{
u = qu.front();
qu.pop();
if(u == e)
return true;
for(int i = 0; i < node[u].size(); i++)
{
v = node[u][i];
if(vis[v] == 0)
{
vis[v] = 1;
qu.push(v);
}
}
}
return false;
}
int main()
{
for(int i = 0; i < 30; i++)
node[i].clear();
while(~scanf("%s",str))
{
if(strcmp(str,"0")==0)
{
memset(vis,0,sizeof(vis));
if(bfs())
printf("Yes.\n");
else
printf("No.\n");
for(int i = 0; i < 30; i++)
node[i].clear();
int flag = 1;
if(flag) continue;
}
int len = strlen(str);
int from = str[0]-'a';
int to = str[len-1]-'a';
node[from].push_back(to);
}
return 0;
}