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

            pku2914 Minimum Cut 無向圖最小割 Stoer_Wagner算法

            題目不用描述了,很裸,求一個無向圖的最小割。
            用網絡流+枚舉這題肯定TLE,學到一個新算法,貼代碼,大家可以作為模板
              1 #include <cmath>
              2 
              3 #include <cstdio>
              4 
              5 #include <memory.h>
              6 
              7 #include <algorithm>
              8 
              9 #include <iomanip>
             10 
             11 #include <iostream>
             12 
             13 #include <vector>
             14 
             15 #include <string>
             16 
             17 #include <queue>
             18 
             19  
             20 
             21 using namespace std;
             22 
             23  
             24 
             25 const int N = 500 + 3;
             26 
             27  
             28 
             29 int n, m;
             30 
             31 int mat[N][N];
             32 
             33 int dist[N];
             34 
             35 int visited[N];
             36 
             37 int del[N];  // true表示該點已經被刪掉
             38 
             39  
             40 
             41 // 結點~n
             42 
             43 int Stoer_Wagner()
             44 
             45 {
             46 
             47      int minCut = INT_MAX;  // 無向圖最小割
             48 
             49      int tmp;
             50 
             51      int i, t, j, k, pre;
             52 
             53      int s = 1;   // 源點
             54 
             55      memset(del, 0sizeof(del));
             56 
             57  
             58 
             59      for (t = 1; t < n; t++)  // n - 1次Maximum Adjacency Search
             60 
             61      {
             62 
             63          for (i = 1; i <= n; i++)
             64 
             65               if (!del[i])
             66 
             67                    dist[i] = mat[s][i];
             68 
             69  
             70 
             71          memset(visited, 0sizeof(visited));
             72 
             73          visited[s] = 1;
             74 
             75          k = s;
             76 
             77          for (i = 1; i <= n - t; i++)  // 每次剩下n - t + 1個結點
             78 
             79          {
             80 
             81               tmp = -1e9;
             82 
             83               pre = k;
             84 
             85               k = 0;
             86 
             87               for (j = 1; j <= n; j++)
             88 
             89               {
             90 
             91                    if (!del[j] && !visited[j] && dist[j] > tmp)
             92 
             93                    {
             94 
             95                        k = j;
             96 
             97                        tmp = dist[j];
             98 
             99                    }
            100 
            101               }
            102 
            103               if (!k) return 0;  // 不連通
            104 
            105  
            106 
            107               visited[k] = 1;
            108 
            109               for (j = 1; j <= n; j++)
            110 
            111                    if (!del[j] && !visited[j])
            112 
            113                        dist[j] += mat[k][j];
            114 
            115          }
            116 
            117  
            118 
            119          minCut = min(minCut, dist[k]);
            120 
            121          del[k] = 1;  // 刪除k點
            122 
            123  
            124 
            125          // 合并k點和源點
            126 
            127          
            128 
            129          for (i = 1; i <= n; i++)
            130 
            131               if (!del[i] && i != pre)
            132 
            133               {
            134 
            135                    mat[pre][i] += mat[k][i];
            136 
            137                    mat[i][pre] = mat[pre][i];
            138 
            139               }
            140 
            141      }
            142 
            143  
            144 
            145      return minCut;
            146 
            147 }
            148 
            149  
            150 
            151 int main ()
            152 
            153 {
            154 
            155      int u, v, w, i;
            156 
            157      while (scanf("%d%d"&n, &m) != EOF)
            158 
            159      {
            160 
            161          memset(mat, 0sizeof(mat));
            162 
            163          while (m--)
            164 
            165          {
            166 
            167               scanf("%d%d%d"&u, &v, &w);
            168 
            169               if (u == v) continue;  
            170 
            171               mat[u + 1][v + 1+= w;
            172 
            173               mat[v + 1][u + 1+= w;
            174 
            175          }
            176 
            177          printf("%d\n", Stoer_Wagner());
            178 
            179      }
            180 
            181 }
            182 
            183 


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

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久精品夜色噜噜亚洲A∨| 久久久亚洲欧洲日产国码aⅴ| 色综合久久天天综合| 国产亚州精品女人久久久久久| 精品无码久久久久久久动漫| 欧美精品九九99久久在观看| 国产亚洲精久久久久久无码| 久久国产高清一区二区三区| 亚洲AV无码久久精品成人| 69SEX久久精品国产麻豆| 青青热久久国产久精品| 国产精品久久久久久久久免费 | 久久久91精品国产一区二区三区 | 亚洲?V乱码久久精品蜜桃| 亚洲国产精品成人久久| 久久精品无码av| 久久精品国产亚洲AV无码偷窥| 日本久久久久久久久久| 久久99精品国产一区二区三区| 2021国产精品午夜久久| 久久99国产一区二区三区| 久久亚洲欧美国产精品| 国内精品久久久久影院亚洲| 亚洲国产精品久久久久婷婷软件| 2019久久久高清456| 99久久99久久精品国产片| 91精品国产91久久久久福利| 久久久国产打桩机| 色综合久久夜色精品国产| 久久久久久青草大香综合精品| 久久91精品国产91久久麻豆| 久久精品国产亚洲AV高清热| 一本色道久久99一综合| 久久人人爽人人爽人人av东京热| 国产精品综合久久第一页| 国产精品九九久久免费视频 | 久久av高潮av无码av喷吹| 久久99国产精品久久99果冻传媒| AV狠狠色丁香婷婷综合久久| 午夜天堂精品久久久久| 久久精品国产99久久无毒不卡|