程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU1181 變形課

HDU1181 變形課

編輯:C++入門知識

PS: 注意輸入,然後建有向圖,我建的無向圖WA了幾次。

#include 
#include 
#include 
#include 
#include 
using namespace std;
const int maxn = 100;
const int maxm = 40;
char str[maxn];
vector g[maxm];
bool vis[maxm];

bool dfs(int s, int t) {
    if(vis[s]) return false;
    vis[s] = true;
    for(int i = 0; i < (int)g[s].size(); i++) {
        int v = g[s][i];
        if(v==t) return true;
        else {
            bool tmp = dfs(v, t);
            if(tmp) return true;
        }
    }
    return false;
}

int main()
{
    int x, y, len;
    for(int i = 0; i < 30; i++) g[i].clear();
    while(gets(str) && str[0]!='0') {
        len = strlen(str);
        x = str[0]-'a'; y = str[len-1]-'a';
        g[x].push_back(y);
       // g[y].push_back(x);
        while(gets(str) && str[0]!='0') {
            len = strlen(str);
            x = str[0]-'a'; y = str[len-1]-'a';
            g[x].push_back(y);
           // g[y].push_back(x);
        }
        int st, des; // start and end.
        st = 'b'-'a';
        des = 'm'-'a';
        memset(vis, false, sizeof(vis));
        bool result = dfs(st, des);
        if(result) printf("Yes.\n");
        else printf("No.\n");
        for(int i = 0; i < 30; i++) g[i].clear();
    }
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved