码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1181 变形课 (bfs)

时间:2015-07-28 06:34:35      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

 

 

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
char str[100];
int mat[30][30];
int vis[30][30];
int ok;
bool isok(int now,int next)
{
    if(mat[now][next]==0||vis[now][next]==1) return false;
    return true;
}
void bfs()
{
    int i,j,k;
    queue<int> q;
    q.push(‘b‘-‘a‘);
    while(!q.empty())
    {
       int now,next;
       now=q.front();
       q.pop();
       if(now==‘m‘-‘a‘)
       {
           ok=1;
           return ;
       }
       for(i=0;i<26;i++)
       {
           next=i;
           if(isok(now,next))
           {
               if(now==‘m‘-‘a‘)
               {
                 ok=1;
                 return ;
               }
               vis[now][next]=1;
               q.push(next);
           }
       }

    }
}

int main()
{
    int cnt;
    int n;
    int i,j,k;
    int f,t;
    while(scanf("%s",str)!=EOF)
    {
        if(strcmp(str,"0")==0)
        {
            printf("No.\n");continue;
        }
        ok=0;
        memset(mat,0,sizeof(mat));
        memset(vis,0,sizeof(vis));
        f=str[0]-‘a‘;
        t=str[strlen(str)-1]-‘a‘;
        mat[f][t]=1;
        while(1)
        {
            scanf("%s",str);
            if(strcmp(str,"0")==0) break;
            f=str[0]-‘a‘;
            t=str[strlen(str)-1]-‘a‘;
            mat[f][t]=1;
        }
        bfs();
        if(ok) printf("Yes.\n");
        else printf("No.\n");
    }
    return 0;
}

 

hdu 1181 变形课 (bfs)

标签:

原文地址:http://www.cnblogs.com/sola1994/p/4681678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!