HDU 1181 变形课
来源:互联网 发布:淘宝退款什么时候到账 编辑:程序博客网 时间:2024/05/16 17:32
大意:给出一些单词,然后一个单词的结尾和一个单词的开头如果是相同的字母,他们就可以相互到达,问是否存在b开头到达m结尾的情况。
做法:string+BFS
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <string>using namespace std;string s[30][1000];//第一维代表以什么字母开头。bool use[30][1000];int num[30];//统计以某字母开头的单词的个数。bool BFS(){ queue<string> q; while(!q.empty()) q.pop(); for(int i = 0 ; i < num[1] ; i++) { q.push(s[1][i]); use[1][i] = true; } while(!q.empty()) { string a = q.front(); //cout<<a<<endl; q.pop(); int len = a.length(); if(a[len-1]=='m') return true; int x = a[len-1] - 'a'; for(int i = 0 ; i < num[x] ; i++) { if(!use[x][i]) { q.push(s[x][i]); use[x][i] = true; } } } return false;}int main(){ string a,b; while(cin>>a) { memset(num,0,sizeof(num)); memset(use,false,sizeof(use)); if(a=="0") continue; int y = a[0]-'a'; int t = num[y]; b = a; s[y][t] = b; num[y]++; while(cin>>a) { if(a=="0") break; y = a[0]-'a'; t = num[y]; b = a; s[y][t] = b; num[y]++; } bool flag = BFS(); if(flag) printf("Yes.\n"); else printf("No.\n"); } return 0;}
0 0
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- hdu 1181 变形课
- HDU 1181 变形课
- hdu 1181 变形课
- 变形课 hdu 1181
- hdu-1181-变形课
- HDU 1181 变形课
- HDU 1181 变形课
- HDU 1181【变形课】
- hdu-1181-变形课
- HDU 1181 变形课
- hdu 1181 变形课
- 11a 模态对话方框
- 6 ①shape 文本框风格 ②按钮式的shape 弧形shape
- 【poj 1741】点分治
- Design Patterns : Protect Proxy
- 创造型模式 - 建造者模式
- HDU 1181 变形课
- 【JavaScript】原生态兼容IE6的图片轮播
- 6 clip 慢慢展开的图片
- HDU 1023 Train Problem II
- vector 实现邻接表
- java-职责链模式
- 【Python学习记录】2015-02-17
- NYOJ--36(动态规划)-题目----------------------------- 最长公共子序列
- (hdu step 4.2.3)Knight Moves(求从起点是否能够到达终点的最小步数)