青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

oyjpArt ACM/ICPC算法程序設計空間

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

/*******************************
圖的DFS信息構建 by oyjpArt
g矩陣: g[i][j] -> 0 : 無邊
                         1 : 可重復訪問邊
                        -1: 非可重復訪問邊
說明:以為在無向圖中u->v訪問之后就不能再從v->u訪問了
       故{u, v}訪問了之后{v, u}要置-1
     如果是有向圖 則沒有這個規則
gc矩陣:gc[i][j]-> 0 : 無邊
                  1 : 樹枝邊
      2 : 反向邊
      3 : 正向邊
      4 : 交叉邊
d數組: 頂點的開始訪問時間表
f數組: 頂點的結束訪問時間表
c數組: 頂點顏色表 0白色 -1灰色 1黑色
p數組: 頂點的前驅表
l數組: 頂點的L值(最頂層的祖先層數)
b數組: 頂點的度數表

關于標號函數 LOW()
LOW(U)代表的是與U以及U的子孫直接相連的結點的最高輩分(深度)
                                 d[U]                 U首次被訪問時
LOW[U] =    min(LOW[U], d[W])    訪問邊{U,W}
                  min(LOW[U], LOW[S])  U的兒子S的關聯邊全部被訪問時
/*******************************/
const int maxn = 100;
int n, g[maxn][maxn], gc[maxn][maxn];
int d[maxn], f[maxn], l[maxn], p[maxn], c[maxn], b[maxn];
int time;

void dfs_visit(int u) {//遞歸搜索以U為根的深度優先樹
 int v;
 c[u] = -1;         //置頂點為灰色//去掉這句之后適用于有向圖(后面設置不可訪問亦同)
 time++; d[u] = time, l[u] = time;
 for(v = 1; v<=n; v++)
  if(g[u][v] > 0)
   if(c[v] == 0)  {         //如果v是白色節點
    g[v][u] = -1;        //不可再訪問
    gc[u][v] = 1;        //樹枝邊
    b[u]++;              //度數
    p[v] = u;            //記錄父親節點
    dist_visit(v);       //遞歸搜索以v為根的深度優先樹
    if(l[v] < l[u])      //v是u的后代
     l[u] = l[v];     //u的兒子v的關聯邊搜索完后計算父親的low值
    g[v][u] = 1;         //恢復可訪問標志
   }
   else {
    if(c[v] < 0) {       //若頂點為灰色
     if(l[v] < l[u])  //u與v相連
      l[u] = l[v];
     gc[u][v] = 2;    //反向邊
    }
    else  {              //黑色
     if(d[v] > d[u])
      gc[u][v] = 3;         //正向邊
     else
      gc[u][v] = 4;         //交叉邊
    }
   }
 c[u] = 1;             //DFS完畢 置黑色吧
 time++; f[u] = time;
}

void dfs() {
 int u;
 memset(gc, 0, sizeof(gc));
 memset(c, 0, sizeof(c));
 memset(b, 0, sizeof(b));
 time = 0;
 for(u = 1; u <= n; u++)
  if(c[u] == 0) {
   p[u] = 0;
   dfs_visit(u);
  }
}
/*******************************
DFS3大經典應用
一: TOPO排序
 DFS之后按照結束訪問時間反向排序即可 如果在DFS過程中出現方向邊(成環) 則無法TOPO
當然我們還有一種經典的TOPO方法 找0度節點迭代刪除法 o(M+N)的TC
二: 求割點和橋
判定規則1: 如果root節點又多于一個1子節點 則root是割點
判定規則2: 如果一個節點u有某一個子節點v不含到u的祖先節點的后向邊 則u為割點
 即對于u的子節點v, u是割點的條件 (p[u] == 0 && b[v] > 1) || (p[u] > 0 && l[v] >= d[u])
橋: 不屬于任何簡單回路的邊 "一牽動全身" l[v] > d[u]即是橋
之所以不能等于 實際上等于的情況是存在2條以上的邊 自然就不是橋了~
 (注意加上割點表 以防重復輸出)
三: 求有向圖的極大強連通分支
1.對圖進行DFS遍歷 遍歷中記下所有的結束時間A[i].遍歷的結果是構建的一座森林W1
  我們對W1中的每棵樹G進行步驟2到步驟3的操作
2.改變圖G中每一條邊的方向 構造出新的有向圖Gr
3.按照A[i]由小到大的順序對Gr進行DFS遍歷.遍歷的結果是構建了新的樹林W2.
  W2中每棵樹上的頂點構成了有向圖的極大強連通分支
/*******************************/
//一個更加簡潔的程序框架(來自<<算法藝術與信息學競賽>>)-------
這里面的Ancestor相當于上面所說的LOW
Procedure DFS(節點編號k, k的父親節點編號father, deep:integer)
var i, tot : integer;
begin
  C[k] = -1; {灰色}
  D[k] = deep; {記錄深度}
  Ancestor[k] = deep, tot = 0;

  for i = 1->n
  begin
      if(節點i和k相連) and (i != father) and (Ci = -1)
     then Ancestor[k] = Min(Ancestor[k], Di);
   if(節點i與k相連) and (Ci = 0) then
   begin
  DFS(i, k, deep + 1);
    tot++, Ancestor[k] = Min(Ancestor[k], Ancestor[i]);
    if(k == Root) and (tot > 1) or
   ( (k != Root) and (Ancestor[i] >= D[k]) )
   then Cut[k] = true;
    if(Ancestor[i] > D[k]) then Brige[k][i] = true
      end
  end
  C[k] = 1; //黑色
  time++, A[i] = time;
end;
//-----------------------------------------------------------

Feedback

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-05-20 21:49 by YPP
你好,我是ACM新手。
請問,在ACM比賽中遇到有關圖的問題時是用鄰接表好還是鄰接矩陣好?我覺得兩個都有不方便的地方。
比如輸入格式要求如下(頂點 與該頂點相鄰的頂點數 與該頂點相鄰的頂點):
A 3 B C D
B 2 A C
C 1 D
D 2 A B

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-05-21 13:53 by oyjpart
下面我用n代表點 m代表邊
鄰接表:訪問任任兩點之間的邊最壞o(n) 遍歷一個點的所有邊o(該點的度數)
鄰接矩陣:訪問任兩點之間的邊o(1) 但是遍歷一個點的所有邊o(n)
由此可以看出 選擇是有目的的
第一 對于稀疏圖 有時候內存不夠用 不得不待用鄰接表
第二 對于比較密集的圖 鄰接表無甚優勢
第三 如果不需要在稀疏圖中經常性的遍歷一個點的所有邊 鄰接矩陣是仍首選的

看到你的輸入數據似乎用鄰接矩陣比較好

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-05-22 20:23 by YPP
非常感謝你的解答。
我那輸入數據,我覺得用鄰接矩陣挺麻煩的。因為只有所有數據輸入完畢才確定圖所有的頂點,不太好處理

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-05-23 13:24 by oyjpart
不管他 開靜態的二維數組滿足題目最大頂點數即可
如果題目沒有說明而且你熟悉stl的話 你就用二維vector

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-12-18 13:04 by robber
非常感謝!
對這個經典問題我思考一天了。對割點、橋等與這個算法的深入聯系都沒發現,現在好了。

# re: 圖的DFS信息構建+割點,橋,極大連通子圖三大法寶  回復  更多評論   

2007-12-18 14:16 by alpc12
不用謝 呵呵
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产精品久久久久久女王| 欧美日韩视频在线| 久久精品av麻豆的观看方式 | 久久国产欧美日韩精品| 亚洲国产精品成人va在线观看| 欧美亚洲在线| 亚洲第一中文字幕在线观看| 国产精品一区亚洲| 国产精品美女久久久久aⅴ国产馆| 欧美精品一区二区三区久久久竹菊 | 久久成人精品| 亚洲小少妇裸体bbw| 99热在这里有精品免费| 亚洲高清色综合| 亚洲国产精品123| 欧美国产精品劲爆| 亚洲高清一区二区三区| 亚洲福利视频在线| 91久久亚洲| 一本久道久久综合中文字幕| 欧美成人精品1314www| 久久免费99精品久久久久久| 久久精品一本| 老司机aⅴ在线精品导航| 蜜臀久久久99精品久久久久久| 麻豆精品视频在线观看| 欧美顶级少妇做爰| 亚洲一区二区三区四区中文| 性欧美精品高清| 亚洲一区中文字幕在线观看| 一本大道久久a久久综合婷婷 | 一本久道综合久久精品| 亚洲视频图片小说| 亚洲黄一区二区三区| 亚洲精品免费电影| 亚洲网站啪啪| 亚洲特级毛片| 久久精品国产v日韩v亚洲| 噜噜噜噜噜久久久久久91| 欧美日韩国产黄| 国产视频久久网| 亚洲精品1234| 亚洲一区二区三区三| 久久成人精品一区二区三区| 欧美大片一区二区| 亚洲一区二区三区高清| 久久久天天操| 欧美性大战久久久久久久| 狠狠入ady亚洲精品经典电影| 亚洲精品欧洲精品| 久久久久国产精品一区三寸| 亚洲精品看片| 亚洲视频在线观看| 久久久久在线| 国产精品婷婷| 亚洲麻豆国产自偷在线| 欧美中文字幕在线| 亚洲精品黄色| 亚洲欧美在线视频观看| 欧美久久久久久蜜桃| 国户精品久久久久久久久久久不卡| 99精品视频一区二区三区| 久久久久久免费| 亚洲国产精品一区在线观看不卡| 亚洲一区日韩| 欧美日韩视频在线| 亚洲精品在线三区| 欧美高清视频www夜色资源网| 亚洲欧美日韩国产成人精品影院| 欧美日韩理论| 日韩一区二区福利| 噜噜噜久久亚洲精品国产品小说| 亚洲免费在线观看| 欧美日韩国产bt| 亚洲视频免费在线观看| 亚洲欧洲精品一区二区三区| 久热综合在线亚洲精品| 精品动漫av| 9色porny自拍视频一区二区| 麻豆成人91精品二区三区| 欧美在线视频全部完| 欧美国产综合一区二区| 亚洲一区二区在线免费观看| 蜜臀久久久99精品久久久久久| 欧美久久久久免费| 亚洲第一狼人社区| 欧美a级片网站| 久久免费观看视频| 国内精品久久久久影院色| 欧美一进一出视频| 一区二区三区成人精品| 国产精品theporn| 亚洲自拍偷拍一区| 99re这里只有精品6| 久久99伊人| 先锋影音网一区二区| 国产日韩在线看片| 久久香蕉国产线看观看av| 久久久一二三| 一区二区久久久久| 一区二区三区国产在线| 欧美激情第10页| 亚洲少妇在线| 久久9热精品视频| 亚洲国产天堂久久国产91| 亚洲欧洲在线播放| 国产精品久久久久久久一区探花 | 久久精品在线免费观看| 一区一区视频| 亚洲人成网站影音先锋播放| 欧美性理论片在线观看片免费| 亚洲男人的天堂在线观看 | 日韩亚洲一区在线播放| 蜜桃av一区二区三区| 欧美激情日韩| 午夜精品久久久久久久蜜桃app| 亚洲一区精品在线| 韩国av一区二区三区四区| 国产在线不卡| 亚洲国产精品女人久久久| 国产精品一区一区| 亚洲精品资源| 日韩午夜在线观看视频| 另类春色校园亚洲| 免费久久99精品国产自| 国产日韩欧美二区| 亚洲一区在线观看视频 | 久久久久久久精| 国产精品欧美久久久久无广告| 亚洲精品黄色| 日韩一级免费| 欧美精品不卡| 亚洲黄色在线观看| 99视频+国产日韩欧美| 久久婷婷丁香| 久久综合狠狠综合久久综合88 | 亚洲欧美视频一区| 午夜日韩在线观看| 国产精品久久久久久超碰| 一本色道久久综合亚洲精品高清| 欧美国产日韩xxxxx| 欧美精品福利在线| 欧美一区三区三区高中清蜜桃| 国产精品99久久99久久久二8 | 亚洲素人一区二区| 国产精品综合视频| 一区二区免费在线播放| 久久裸体视频| 亚洲欧美激情一区二区| 国产精品久久精品日日| 99re在线精品| 欧美大色视频| 免费欧美日韩| 亚洲人www| 亚洲精品国产无天堂网2021| 亚洲精品欧洲| 欧美国产综合视频| 亚洲字幕一区二区| 欧美精品在线观看91| 久久久免费精品| 欧美天天影院| 亚洲第一黄色网| 欧美日韩亚洲一区二区| 另类成人小视频在线| 国产精品激情| 一区二区三区日韩在线观看| 亚洲欧洲日本国产| 久久婷婷国产麻豆91天堂| 久久成人av少妇免费| 亚洲国产精品久久久| 性色av香蕉一区二区| 国产真实乱偷精品视频免| 欧美成年人网站| 国产精品国产三级国产aⅴ浪潮| 久久av资源网站| 久久久噜噜噜久久中文字免| 欧美一区二区三区久久精品| 久久久久国产精品www| 国产一区二区黄色| 裸体歌舞表演一区二区| 亚洲乱码国产乱码精品精98午夜| 亚洲一区二区三区国产| 一区二区三区在线高清| 免费观看久久久4p| 亚洲欧美激情四射在线日 | 亚洲在线国产日韩欧美| 狠狠色狠狠色综合日日tαg| 中文有码久久| 亚洲在线观看视频网站| 欧美成人a视频| 欧美成在线视频| 在线观看三级视频欧美| 欧美一区二区三区成人| 欧美一区二区福利在线| 国产精品一区二区视频| 一区二区三区日韩| 性欧美videos另类喷潮| 国产一区二区视频在线观看| 美女脱光内衣内裤视频久久影院| 一二美女精品欧洲|