病毒virus(拓撲排序)

2021-09-25 03:18:01 字數 2369 閱讀 2773

題目描述

有一天,小y突然發現自己的計算機感染了一種病毒!還好,小y發現這種病毒很弱,只是會把文件中的所有字母替換成其它字母,但並不改變順序,也不會增加和刪除字母。

現在怎麼恢復原來的文件呢!小y很聰明,他在其他沒有感染病毒的機器上,生成了乙個由若干單詞構成的字典,字典中的單詞是按照字母順序排列的,他把這個檔案拷貝到自己的機器裡,故意讓它感染上病毒,他想利用這個字典檔案原來的有序性,找到病毒替換字母的規律,再用來恢復其它文件。

現在你的任務是:告訴你被病毒感染了的字典,要你恢復乙個字母串。

輸入

第一行為整數k(k

≤50000

)k(k≤50000)

k(k≤50

000)

,表示字典中的單詞個數。

以下k行,是被病毒感染了的字典,每行乙個單詞。

最後一行是需要你恢復的一串字母。

所有字母均為小寫。

輸出

輸出僅一行,為恢復後的一串字母。當然也有可能出現字典不完整、甚至字典是錯的情況,這時請輸出乙個0。

樣例輸入

6cebdbac

cacecd

dcaaba

baccedab

樣例輸出

abcde

範圍無思路

此題毒性巨大,請讀者做好心理準備。

要不是老師說是用拓撲排序,真看不出此題怎麼做

開始表演!!!

引入思路

由於它所給的單詞是有序的,所以我們要在單詞中找到可能存在的字母順序(某個比某個大)。

想一想,我們自己查英語字典的時候,比如(common),我們是先確定第乙個字母c

cc在字典中的位置,而接下來我們要翻第二個字母,所以我們可能先會翻到a,b

,c

…a,b,c…

a,b,c…

,我們就可以確定o肯定比a,b

,c

…a,b,c…

a,b,c…

大,後面的字母以此類推

正式開始

由於題目說了每個詞都是按字典序給出的,所以我們需要也只能比較相鄰兩個詞第乙個不相同的字母,後面就不能比較了,因為我們無法確定它們的順序(畢竟前面都不一樣,舉個例子abcde(先給出)和abcfd(後給出),這樣我們只能確定f比d大,而不能確定它們後面字母的大小關係)

有了大小關係,我們就可以建圖,然後通過拓撲把病毒的字母大小的排列方式拿出來, 同時就可以把病毒字母與真實字母連線起來(map),最後把給出的字串對映成正確字串就行了

注意0的情況

code

#include

#include

#include

#include

#include

#include

using

namespace std;

#define m 50005

map<

char

,char

>mm;

vector<

int>g[

150]

;int n, cnt;

int in[

150]

, use[

150]

;string s[m]

, sim, ans;

intmain()

}}for(

int i =

1; i <= n; i ++

)for

(int i =

1; i <= cnt; i ++

) mm[j+

'a'-1]

='a'

+i-1

;//對映

in[j]=-

1;int siz = g[j]

.size()

;for

(int k =

0; k < siz; k ++)}

for(

int i =

0; i < sim.

length()

; i ++

) ans[i]

= mm[sim[i]];

//對映

}for

(int i =

0; i < sim.

length()

; i ++

)//如果把sim該為ans它就輸不出來

cout<;//printf("%s\n",ans);也不行,不曉得為什麼

return0;

}

拓撲排序 病毒virus

問題描述 有一天,小y突然發現自己的計算機感染了一種病毒!還好,小y發現這種病毒很弱,只是會把文件中的所有字母替換成其它字母,但並不改變順序,也不會增加和刪除字母。現在怎麼恢復原來的文件呢!小y很聰明,他在其他沒有感染病毒的機器上,生成了乙個由若干單詞構成的字典,字典中的單詞是按照字母順序排列的,他...

拓撲排序 煩人的幻燈片 病毒

q 拓撲排序用於解決什麼問題?煩人的幻燈片 題目描述 李教授於今天下午做乙個非常重要的演講。不幸的是他不是乙個非常愛整潔的人,他把自己做演講要用的幻燈片隨便堆放在一起。因此,演講之前他不得不去整理這些幻燈片。做為乙個講求效率的學者,他希望盡可能簡單地完成它。情況是這樣,教授這次演講一共要用n張幻燈片...

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...