HDU 1181 变形课

来源:互联网 发布:黄网络直播 编辑:程序博客网 时间:2024/06/05 10:24

原题链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1181

题目大意:

思路:

用一个结构体来存放每个单词的首字母和尾子母就可以方便的解决这一问题
其余的和一般的BFS一样

代码如下:

#include <iostream>#include <cstring>#include <queue>#include <string>using namespace std;struct Word{    char fir;    char last;};int vis[10000];bool Find;int number;Word letter[10000];void bfs( ){       Word Now;    queue<Word> way;    int i;    for ( i = 0; i < number; i++ )        if( letter[i].fir == 'b' )        {way.push ( letter[i] );}    while( !way.empty ())    {        Now = way.front ();        way.pop ();        if( Now.fir == 'm' )        {            Find = true;            return;        }        int i;        for( i = 0; i < number; i++)        {            if( vis[i] == 0 && letter[i].fir == Now.last )            {                vis[i] = 1;                way.push ( letter[i] );            }        }    }}int main(){    int i;    string tmp;    number = 0;    while( cin >> tmp )    {        if( tmp == "0" )        {               Find = false;            bfs();            if( Find )                cout<<"Yes."<<endl;            else                cout<<"No."<<endl;        }        else        {            i = tmp.length ();            letter[number].fir = tmp[0];            letter[number].last = tmp[i - 1];            vis[number] = 0;            number++;        }        }           return 0;}
0 0