NYIST 99 單詞拼接

2022-03-06 00:58:10 字數 1902 閱讀 5539

單詞拼接

時間限制: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 #include 

11 #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 }

view code

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的當起點就行,當然要按著字典序!然...