• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            a tutorial on computer science

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              21 隨筆 :: 0 文章 :: 17 評論 :: 0 Trackbacks
                實(shí)在坑爹,網(wǎng)上沒什么人把這事講的清楚,基本上是一些抄別人代碼的貨。
               無向圖的點(diǎn)雙聯(lián)通,邊雙聯(lián)通,求割點(diǎn),橋(割邊)
               有向圖的強(qiáng)聯(lián)通分量,有向圖的割點(diǎn),有向圖的橋這倆和求無向圖沒啥區(qū)別。

               其實(shí),這些問題總結(jié)成一句話就是求環(huán)。然后再根據(jù)環(huán)來判斷相應(yīng)的情況。其實(shí)這些東西算法導(dǎo)論上講的比較明顯和清楚,但是限于他講的還不在我的理解范圍之內(nèi),所以看了一遍沒看懂糾結(jié)了好多天弄了幾個題之后,發(fā)現(xiàn)那上面的寫法非常明了。好了下面就說說每種怎么求。

              首先是無向圖的點(diǎn)雙連通。點(diǎn)雙連通就是說這個點(diǎn)可以通過dfs樹的子節(jié)點(diǎn)鏈接到父節(jié)點(diǎn)上面去。我們只要求每個點(diǎn)的子節(jié)點(diǎn)不通過父親節(jié)點(diǎn)連接到當(dāng)前vis[v]=1的最小編號就可以了。這樣所有的雙連通的點(diǎn)的low都是一樣的。這里有個非常非常細(xì)微的一點(diǎn):如果某個父親點(diǎn)是割點(diǎn),并且它又鏈接到了更高層的父親,那么當(dāng)刪除這個父親點(diǎn)的時候,圖就變成兩個不連通的子圖了。所以我們在判斷的時候,當(dāng)某個點(diǎn)連接到vis[v] = 1的點(diǎn)的時候,low[u] = min(low[u],dfn[v]);這里就是為了防止v是割點(diǎn)。而當(dāng)求邊雙連通的時候,就可以不管這些,因為刪掉了邊那個點(diǎn)還在,所以無所謂:low[u] = min(low[u],low[v])。用算法導(dǎo)論上面白色點(diǎn),灰色點(diǎn),黑色點(diǎn)標(biāo)記的方法很容易理解這些看起來復(fù)雜的玩意。

              其次是求割點(diǎn)和割邊。神奇的是,這兩個玩意的求法和點(diǎn)雙連通邊雙連通大致是相同的。割點(diǎn)的話,如果它所有的孩子都能連接到父親點(diǎn)以上(注意上一段哦),那么可以,否則不可以。割邊比這個簡單點(diǎn),有向邊(u,v)如果v點(diǎn)可以不通過樹邊連接到父親點(diǎn)和父親點(diǎn)以上,那么就是割邊。大概就是這樣子,具體的細(xì)節(jié)自己想下就好了。關(guān)鍵就是那個通過自己繞到父親點(diǎn)是一個比較麻煩的地方。
              
              然后是有名的求有向圖的強(qiáng)連通分量算法。其實(shí)這個算法已經(jīng)說過了,就是求無向圖的邊雙連通的算法。一個節(jié)點(diǎn)的子節(jié)點(diǎn)通過邊繞到最高的灰色節(jié)點(diǎn)上就可以了。我們也不用考慮什么割點(diǎn)啊什么的了。實(shí)際上一個極大強(qiáng)連通分量就是環(huán)套環(huán),那么我們把這個環(huán)里面每個點(diǎn)都找到可以繞到的dfn最小的節(jié)點(diǎn)即可。

              說了這么多里面有很多細(xì)節(jié)要注意,而且求有向圖的強(qiáng)連通分量算法可以寫得更簡單,不用弄個棧來糊弄人的。只要求出low數(shù)組就一切OK了。算導(dǎo)的好處就是寫的很經(jīng)典,壞處就是說的很少。所以需要把很多東西有過一定的了解和對比之后再看才有意義。同時找題解的過程發(fā)現(xiàn)了許多人的代碼寫得很簡介優(yōu)美,比主流的寫法好很多,我想說代碼反映了一個人的思維過程。
              
              下次把幾個求各種聯(lián)通的模板補(bǔ)一下,看看能不能寫出點(diǎn)自己滿意的代碼出來。
              以上。



            posted on 2012-07-31 22:36 bigrabbit 閱讀(668) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国内精品伊人久久久久网站| 麻豆AV一区二区三区久久 | 久久精品一区二区三区AV| 色8激情欧美成人久久综合电| 国内精品伊人久久久久影院对白| 三级三级久久三级久久| 久久精品天天中文字幕人妻| 久久e热在这里只有国产中文精品99 | 日本久久久久久久久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久精品视频免费观看| 久久精品日日躁夜夜躁欧美| 麻豆精品久久久一区二区| 久久久无码精品亚洲日韩京东传媒| 色综合久久无码五十路人妻| 久久精品一区二区影院| 美女写真久久影院| 国产婷婷成人久久Av免费高清| 伊人色综合九久久天天蜜桃| 久久九九亚洲精品| 九九久久自然熟的香蕉图片| 思思久久99热只有频精品66| 久久本道综合久久伊人| 成人资源影音先锋久久资源网| 国产精品一区二区久久精品涩爱 | 综合人妻久久一区二区精品| 亚洲国产小视频精品久久久三级| 久久精品一区二区三区不卡| 99精品久久久久中文字幕| 国产A级毛片久久久精品毛片| 欧美精品福利视频一区二区三区久久久精品| 99久久精品日本一区二区免费 | 国产精品一区二区久久国产| 亚洲av伊人久久综合密臀性色| 久久精品成人欧美大片| 精品久久久久久久国产潘金莲| 青青热久久国产久精品| 色婷婷狠狠久久综合五月| 久久精品无码av| 日本亚洲色大成网站WWW久久 | 久久精品中文无码资源站|