• <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>

            pku 3177 Redundant Paths 無向圖找橋、縮點問題

            題意很簡單,一個無向圖,要求在圖中添加最少的邊,使得任意兩節點間均有2條或以上不同的路徑。
            這題本質上看是添邊然后構成一個強聯通圖。
            算法是這樣,首先找到橋,將強聯通分支縮點,這樣構成一棵樹。要把樹變為強聯通圖,即將葉節點兩兩配對即可(如果有奇數個頁節點,則將未配對節點再添加一條邊即可)。
            注意!無向圖找橋的時候要對邊加以標記,除非沒有平行邊,否則不要在DFS中用父節點防止走2環
             1 # include <stdio.h>
             2 # include <string.h>
             3 # include <stdbool.h>
             4 # define MAX 0xfffffff
             5 # define min(a,b) ((a)<(b)?(a):(b))
             6 int n,m;
             7 int g[5001],v[20001],nxt[20001],c=0;
             8 int cnt=0,low[5001],cid[5001],cnum=0;
             9 bool map[5001][5001];
            10 bool used[20001];
            11 int stack[5001],top=-1;
            12 void dfs(int pos)
            13 {
            14      int p,now=cnt++;
            15      stack[++top]=pos;
            16      low[pos]=now;
            17      for(p=g[pos];p!=-1;p=nxt[p])
            18      if(!used[p>>1])
            19      {
            20        used[p>>1]=1;
            21        if(low[v[p]]==-1)
            22          dfs(v[p]);
            23         low[pos]=min(low[pos],low[v[p]]);
            24        if(low[v[p]]>now)
            25        {
            26           do
            27           {
            28               cid[stack[top]]=cnum;
            29           }while(stack[top--]!=v[p]);
            30           cnum++;
            31        }
            32      }
            33 }
            34 
            35 int main()
            36 {
            37    // freopen("input.txt","r",stdin);
            38    // freopen("output.txt","w",stdout);
            39     int i,p,ans=0;
            40     scanf("%d%d",&n,&m);
            41     memset(g,-1,sizeof(g));
            42     while(m--)
            43     {
            44        int s,t;
            45        scanf("%d%d",&s,&t);
            46        v[c]=t;
            47        nxt[c]=g[s];
            48        g[s]=c++;
            49        v[c]=s;
            50        nxt[c]=g[t];
            51        g[t]=c++;
            52        
            53     }    
            54     memset(low,-1,sizeof(low));
            55     memset(used,0,sizeof(used));
            56     dfs(1);
            57     while(top>=0)
            58        cid[stack[top--]]=cnum;
            59     cnum++;
            60     memset(map,0,sizeof(map));
            61     for(i=1;i<=n;i++)
            62       for(p=g[i];p!=-1;p=nxt[p])
            63       {
            64           if(cid[v[p]]!=cid[i])
            65              map[cid[i]][cid[v[p]]]=map[cid[v[p]]][cid[i]]=1;
            66       }
            67     for(i=0;i<cnum;i++)
            68     {
            69       int cal=0;
            70       for(p=0;p<cnum;p++)
            71          cal+=map[p][i];
            72       ans+=(cal==1?1:0);
            73     }
            74     printf("%d\n",(ans+1)>>1);
            75   //  system("pause");
            76     return 0;
            77 }
            78 


            posted on 2010-10-25 23:39 yzhw 閱讀(665) 評論(0)  編輯 收藏 引用 所屬分類: graph

            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            免费精品99久久国产综合精品| 国产精品久久久久aaaa| 久久天天躁狠狠躁夜夜2020| 伊人久久国产免费观看视频| 麻豆亚洲AV永久无码精品久久| 久久99中文字幕久久| 久久毛片一区二区| 久久无码人妻一区二区三区| 精品久久久久久无码人妻蜜桃| 囯产精品久久久久久久久蜜桃| 91久久精品电影| 久久亚洲欧美国产精品| 亚洲国产精品狼友中文久久久 | 精品久久久久中文字| 波多野结衣AV无码久久一区| 亚洲精品高清国产一久久| 无码国内精品久久人妻| 亚洲精品国精品久久99热| 精品久久久久久久久久中文字幕| 97久久精品无码一区二区天美| 亚洲国产日韩欧美久久| 精品国产91久久久久久久a | 亚洲va国产va天堂va久久| 国产呻吟久久久久久久92| 久久精品国产99国产精偷| 久久精品a亚洲国产v高清不卡| 久久精品亚洲AV久久久无码| 青春久久| 久久香综合精品久久伊人| 久久午夜无码鲁丝片秋霞| 国产精品美女久久福利网站| 久久亚洲AV无码西西人体| 热久久国产欧美一区二区精品| 国产免费福利体检区久久| 国产精品99久久久久久董美香| 欧美一区二区精品久久| 丁香五月综合久久激情| 久久97久久97精品免视看秋霞| 久久久久久A亚洲欧洲AV冫| 亚洲国产精品无码久久久久久曰| 色综合久久天天综线观看|