單詞拼接
時間限制:3000 ms | 記憶體限制:65535 kb
難度:5
描述給你一些單詞,請你判斷能否把它們首尾串起來串成一串。前乙個單詞的結尾應該與下乙個單詞的道字母相同。如
aloha
dogarachnid
gopher
tiger
rat可以拼接成:aloha.arachnid.dog.gopher.rat.tiger
輸入第一行是乙個整數n(0
輸出如果存在拼接方案,請輸出所有拼接方案中字典序最小的方案。(兩個單詞之間輸出乙個英文句號".")
如果不存在拼接方案,則輸出
***樣例輸入26
aloha
arachnid
doggopher
rattiger
3oak
maple
elm樣例輸出
aloha.arachnid.dog.gopher.rat.tiger
*****
waterloo local 2003.01.25 /poj
上傳者張云聰
解題:判尤拉路徑+連通
有向圖存在尤拉路徑的條件是所有點的入度等於出度,或者乙個點的入度比出度大一,為終點,一點的出度比入度大一,為始點,其餘的點入度等於出度。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #includeview code11 #include
12 #include 13
#define ll long long
14#define pii pair15
#define inf 0x3f3f3f3f
16using
namespace
std;
17const
int maxn = 1010;18
struct
arc ;
22arc e[maxn];
23int
head[maxn],uf[maxn],d[maxn],tot,n,m,cnt;
24string
str[maxn];
25bool
vis[maxn];
26char ans[maxn][30
];27
bool cmp(const
string &a,const
string &b)
30void add(int u,int v,string &s)
36int find(int
x) 40
void dfs(int u,int
id)46}47
if(id > -1) strcpy(ans[cnt++],e[id].str);48}
49int
main()
62for(int i = 0; i < m; ++i)
73int root = 0,st = -1,a = 0,b = 0;74
bool flag = true;75
for(int i = 0; i < 26; ++i)
82if(st == -1) st =i;
83if(abs(d[i]) > 1
) 87
if(d[i] == 1)91
if(d[i] == -1) b++;92}
93}94if(flag &&(a == b && b == 1 || a == b && b == 0
))else puts("
***"
);101
}102
return0;
103 }
nyoj 99 單詞拼接 euler, dfs
記憶體限制 64mb 時間限制 3000ms 特判 no 通過數 7 提交數 14 難度 5 給你一些單詞,請你判斷能否把它們首尾串起來串成一串。前乙個單詞的結尾應該與下乙個單詞的道字母相同。如aloha dogarachnid gopher tiger rat可以拼接成 aloha.arachni...
NYOJ 99 單詞拼接 尤拉迴路
時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 給你一些單詞,請你判斷能否把它們首尾串起來串成一串。前乙個單詞的結尾應該與下乙個單詞的道字母相同。如aloha dogarachnid gopher tiger rat可以拼接成 aloha.arachnid.dog.gophe...
NYOJ 99 單詞拼接 尤拉迴路或路徑
題目傳送門 思路 單詞頭的字母為乙個入讀,尾為乙個出度,先判斷能不能形成尤拉路徑 條件 因為這是有向圖,起始點的in比out大1,終點的out比in大1,只有這兩個點的in和out是不一樣,其他點的in和out的一樣的,所以同時找到起點。如果是迴路的話,找個有out的當起點就行,當然要按著字典序!然...