hdu 1181 变形课 (dfs)

来源:互联网 发布:知乎 哲学 编辑:程序博客网 时间:2024/05/16 17:07
这个题目就是给一堆字符串 但是有用的只有 第一个字母和最后一个字母
其实就是个搜索 用map[26][26]表示 一个图 如果可以从某个字母到另一个的话 标记 map中那个位置为1;
最后看能不能从b 到 m
直接从b dfs 一直看 访问一个就标记 1 

反正是最基础的dfs了, 直接敲完就AC了
#include<cstdio>#include<iostream>#include<cstring>#include<string>using namespace std;int map[26][26];bool vis[26];int s,e;bool flag;void dfs(int a){    if(a==e)        flag=1;    if(flag)    return ;    int i,j;    vis[a]=1;    for(i=0;i<26;++i)    {        if(map[a][i] && !vis[i])        {            dfs(i);        }    }}int main(){    char str[100];    int a,b;    s=1;    e=12;    flag=0;    memset(map,0,sizeof(map));    memset(vis,0,sizeof(vis));    while(scanf("%s",str)!=EOF)    {        if(str[0]=='0')        {            dfs(1);            if(flag)            printf("Yes.\n");            else            printf("No.\n");            memset(map,0,sizeof(map));            memset(vis,0,sizeof(vis));            flag=0;        }        else        {            a=str[0]-'a';            b=str[strlen(str)-1]-'a';            map[a][b]=1;        }    }}

原创粉丝点击