22.4-1:
不得不說老外有時(shí)候也挺變態(tài)的,搞這么復(fù)雜個(gè)圖...考概念你把圖弄小點(diǎn)啊,考這么大,嚇?biāo)牢疫@種剛?cè)腴T的小菜鳥小朋友咋辦
寫紙上了略了,耐心點(diǎn)就好

22.4-2:
開始覺得是深搜,試了一下不行
然后聯(lián)想到這節(jié)講的就是拓排...肯定得用拓排啦(填鴨式教育的思維啊...)
不過還是沒想出來線性算法,到處搜答案...汗,一搜搜到斯坦福的一篇作業(yè)講解,牛叉學(xué)校果然不一樣
看的結(jié)果是——?jiǎng)討B(tài)規(guī)劃...
看來DP快點(diǎn)上手了

演示圖(標(biāo)記為數(shù)字的完全是為方便DFS時(shí)候的順序,假設(shè)同22.3-2)
(1)拓排,即可得類似P336,圖22-7所示的從左到右的一個(gè)順序關(guān)系,即上圖下部分的樣子
(2)DP一下
記P[v]為s到v的路徑數(shù),初始化為0
把P[p]設(shè)為1
P[v]=(u,v)belongs to EP[u]
也就是說等于所有拓?fù)湫蚯懊娴呐c之相邊的頂點(diǎn)的P[]之和
復(fù)雜度為:
拓排: O(V+E)
左到右掃一遍DP:V
所以為O(V+E)

不明白的地方:用啥數(shù)據(jù)結(jié)構(gòu)表示呢?
A:鄰接表...
http://www-cs-students.stanford.edu/phd/comps/2007/2007-Analysis_of_Algorithms-solutions.pdf

22.4-3: