有 nn 個盤子,每個盤子上寫著乙個僅由小寫字母組成的英文單詞。
你需要給這些盤子安排乙個合適的順序,使得相鄰兩個盤子中,前乙個盤子上單詞的末字母等於後乙個盤子上單詞的首字母。
請你編寫乙個程式,判斷是否能達到這一要求。
輸入格式
第一行包含整數 tt,表示共有 tt 組測試資料。
每組資料第一行包含整數 nn,表示盤子數量。
接下來 nn 行,每行包含乙個小寫字母字串,表示乙個盤子上的單詞。
乙個單詞可能出現多次。
輸出格式
如果存在合法解,則輸出」ordering is possible.」,否則輸出」the door cannot be opened.」。
資料範圍
1≤n≤1051≤n≤105,
單詞長度均不超過1000
輸入樣例:32
acmibm
3acm
malform
mouse2ok
ok輸出樣例:
the door cannot be opened.
ordering is possible.
the door cannot be opened.
#include
#include
#include
#include
using
namespace std;
const
int n =30;
int n;
int din[n]
, dout[n]
;bool st[n]
;int p[n]
;int
find
(int x)
intmain()
int start =
0, end =0;
bool success =
true
;for
(int i =
0; i <
26; i ++)if
(din[i]
!= dout[i])}
if(success &&!(
!start &&
!end || start ==
1&& end ==1)
) success =
false
;int rep =-1
;for
(int i =
0; i <
26; i ++)if
(st[i])}
if(success)
puts
("ordering is possible.");
else
puts
("the door cannot be opened.");
}return0;
}
尤拉迴路和尤拉路徑
幾個入門的題目 hdu 1878 判定乙個圖是否存在尤拉迴路。直接判斷圖是否連通和每個點的度數是否為偶數就行了。可用並查集判斷連通,也可以用dfs include include include include using namespace std const int maxn 1100 int ...
尤拉路徑 尤拉迴路
尤拉迴路 連通圖,一條路徑恰好經過所有邊一次,並且構成迴路 起點終點相同 尤拉路徑 連通圖,一條路徑恰好經過所有邊一次 起點終點不必相同 具有尤拉迴路的圖稱尤拉圖,具有尤拉路徑但不具有尤拉迴路的圖稱半尤拉圖 無向圖尤拉迴路的判斷 連通圖,所有頂點度數均為偶數 無向圖尤拉路徑的判斷 連通圖,只有兩頂點...
尤拉迴路 尤拉路徑
尤拉路徑 如果圖 g 種的一條路徑包括所有的邊,且僅通過一次的路徑.尤拉迴路 能回到起點的尤拉路徑.混合圖 既有無向邊又有無向邊的圖.hierholzer演算法自動尋找尤拉迴路,在找不到尤拉迴路的情況下會找到尤拉路徑。前提是得給它指定好起點。演算法流程 無向圖 1.判斷奇點數。奇點數若為0則任意指定...