題意:輸入n個單詞,判斷是否可以使這些單詞排成一列,每個單詞的第乙個字母與上乙個單詞的最後乙個字母相同,最後乙個字母與下乙個單詞的第乙個字母相同
解法:以每個單詞的首尾字母為點,單詞為邊,dfs判斷圖的連通性,然後判斷是否存在尤拉通路
#include
using namespace std;
char str[1005];
int f[30][30];
intin[30], out[30];
void dfs(int u)
}}int main()
bool res = 1;
dfs(u);
for(int i = 0; i < 26; ++i)
}if(!res) break;
}if(res)
else
if(in[i] == out[i] - 1)
else
if(in[i] == out[i])
}if(num == 24 && num1 == 1 && num2 == 1 || num == 26) printf("ordering is possible.\n"); //有向圖存在尤拉通路的判斷依據:所有點的出度等於入度,或者只有乙個點的出度等於入度加一,另乙個點的出度等於入度減一,其餘的點出度與入度相等
else printf("the door cannot be opened.\n");
}else printf("the door cannot be opened.\n");
}}
Uva10129 尤拉迴路
play on wordsuva 10129 ordering is possible.the door cannot be opened.1 include2 include3 include4 const int maxn 26 5 using namespace std 6 7尤拉迴路 8圖是...
UVA10129 尤拉迴路 DFS
第一次寫部落格,以前一直沒有總結過,現在開始對自己學的東西做一些記錄吧,方便以後複習或者就當作留個腳印。筆者目前大一,水平弱弱弱 有不正確的地方或者可以改進的地方還望指出。找夥伴,有想一起學習的朋友可以一起交流交流。email zpengst outlook.com 題目大意 輸入n個單詞,判斷是否...
UVa 10129單詞(尤拉迴路)
題意是輸入n個單詞,是否可以把所有這些單詞排成乙個序列,使得每個單詞的第乙個字母和上乙個單詞的最後乙個字母相同。輸入中可以有重複單詞。由於最後只需要判斷是否能排成這樣的乙個序列,所以沒有輸入單詞後,只需要把首尾字母儲存下來,然後可以dfs深度遞迴。由於可能會有重複單詞,在這裡可以設乙個times陣列...