HDOJ 1181 变形课 DFS & BFS & Floyd

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181


题目大意   给n个单词,你从中找出以b开头以m结尾的一串连续单词,比如给你 ball , aa , bo,lop,pm,你要从中找出ball-iop-pm 。

                   如果找的要输出yes 找不到输出no。


然后这道题有很多种写法,我只用了dfs ,bfs,和floyd。


第一种  DFS

/*  BY shu_onisac
    测试结果  AC 
*/

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x=i)return ;
	
	if(map[k][1]=='m')
	{
		ans=1;
	//	cout<<"ans123"<


第二种  BFS

/*  BY shu_onisac
    测试结果  AC 
*/

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x

第三种 floyd  这个是年轻不懂事的时候写的 请自动忽略函数名

#include
#include
#include
#include
#include
using namespace std;
bool a[1000][1000];
void fuck(){
	int i,j,k;
	for(i=0;i<26;++i){
		for(j=0;j<26;++j){
			for(k=0;k<26;++k){
				if(a[j][i]&&a[i][k])
					a[j][k]=1;
				}}}
	
	}

int main(){
	char s[100];
	while(gets(s)){
		memset(a,0,sizeof(a));
		while(s[0]!='0'){
		a[s[0]-'a'][s[(strlen(s)-1)]-'a']=1;
			gets(s);}
		fuck();
		if(a[1][12])cout<<"Yes."<


你可能感兴趣的:(ACM)