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

HDOJ1181(简单DFS)(练习使用STL)

时间:2015-08-28 13:11:42      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<cstdio>
#include<string>
#include<map>
#include<queue>
#include<vector>
using namespace std;
const int MAX_N=105;
vector<string> words;
map<string, bool> vis;
queue<string> que;
bool dfs(int i,string word)
{
    int len=word.length();
    if(word[len-1]==m)
    {
        return true;
    }
    if(i==words.size())
    {
        return false;
    }
    
    for(int j=0; j<words.size(); j++)
    {
        string s=words[j];
        if(!vis[s]&&word[len-1]==s[0])
        {
            vis[s]=true;
            if(dfs(i+1,s))
                return true;    
            vis[s]=false;
        }
    }
    return false;
}

void Judge()
{
    bool flag=false;
    
    while(que.size()!=0)
    {
        map<string,bool>::iterator it;
        for(it=vis.begin(); it!=vis.end(); it++)
        {
            it->second=false;
        }
        string s=que.front();
        que.pop();
        vis[s]=true;
        if(dfs(1,s))
        {
            flag=true;
            break;
        }
    }
    
    while(!que.empty())
    {
        que.pop();
    }
    if(flag)
    {
        printf("Yes.\n");
    }
    else
    {
        printf("No.\n");
    }
}
int main()
{
    string s;
    while(cin>>s)
    {
        if(s.compare("0")==0)
        {
            Judge();
            words.clear();
            vis.clear();
            continue;
        }
        words.push_back(s);
        if(s[0]==b)
        {
            que.push(s);
        }
    }
    
    return 0;
}

 

HDOJ1181(简单DFS)(练习使用STL)

标签:

原文地址:http://www.cnblogs.com/program-ccc/p/4766082.html

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