首页 > 代码库 > HDU 1811
HDU 1811
通过一个单词来建立图形结构
将单词词头指向词尾作为一条边
图模型建立好后,从b出发,dfs到所有搜索的到的点
最后判断m是否被搜索到过即可
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 using namespace std; 5 char s[10005]; 6 int first[30] , k , vis[30]; 7 8 struct Edge{ 9 int y , next;10 }e[100005];11 12 void add_edge(int x , int y)13 {14 e[k].y = y , e[k].next = first[x];15 first[x] = k++;16 }17 18 void dfs(int t)19 {20 vis[t] = 1;21 for(int i = first[t] ; i!=-1 ; i=e[i].next){22 int v = e[i].y;23 if(!vis[v]) dfs(v);24 }25 }26 int main()27 {28 // freopen("a.in" , "r" , stdin);29 k = 0;30 memset(first , -1 , sizeof(first));31 memset(vis , 0 , sizeof(vis));32 while(scanf("%s" , s)!=EOF){33 if(s[0] == ‘0‘){34 dfs(1);35 if(vis[(int)(‘m‘-‘a‘)]) puts("Yes.");36 else puts("No.");37 k = 0;38 memset(first , -1 , sizeof(first));39 memset(vis , 0 , sizeof(vis));40 continue;41 };42 int len = strlen(s);43 int m = (int)(s[0] - ‘a‘);44 int n = (int)(s[len-1] - ‘a‘);45 add_edge(m , n);46 }47 return 0;48 }
HDU 1811
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。