• <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>
            posts - 7,comments - 3,trackbacks - 0
            Minimum Cut
            Time Limit: 10000MSMemory Limit: 65536K
            Total Submissions: 5403Accepted: 2113
            Case Time Limit: 5000MS

            Description

            Given an undirected graph, in which two vertices can be connected by multiple edges, what is the size of the minimum cut of the graph? i.e. how many edges must be removed at least to disconnect the graph into two subgraphs?

            Input

            Input contains multiple test cases. Each test case starts with two integers N and M (2 ≤ N ≤ 500, 0 ≤ M ≤ N × (N − 1) ⁄ 2) in one line, where N is the number of vertices. Following are M lines, each line contains M integers AB and C (0 ≤ AB < NA ≠ BC > 0), meaning that there C edges connecting vertices A and B.

            Output

            There is only one line for each test case, which contains the size of the minimum cut of the graph. If the graph is disconnected, print 0.

            Sample Input

            3 3
            0 1 1
            1 2 1
            2 0 1
            4 3
            0 1 1
            1 2 1
            2 3 1
            8 14
            0 1 1
            0 2 1
            0 3 1
            1 2 1
            1 3 1
            2 3 1
            4 5 1
            4 6 1
            4 7 1
            5 6 1
            5 7 1
            6 7 1
            4 0 1
            7 3 1

            Sample Output

            2
            1
            2

            Source

            Baidu Star 2006 Semifinal 
            Wang, Ying (Originator) 
            Chen, Shixi (Test cases)

            全局最小割,模板題,Stor-Wagner算法,大概就是prime的最大生成樹,具體的網上有很多,可以google到的,不多說了。
            代碼:
            #include<stdio.h>
            #include<string.h>

            #define NN 504
            #define INF 1 << 30
            int vis[NN];
            int wet[NN];
            int combine[NN];
            int map[NN][NN];

            int S, T, minCut, N;
            void Search()
            {
                
            int i, j, Max, tmp;
                memset(vis, 
            0sizeof(vis));
                memset(wet, 
            0sizeof(wet));
                S 
            = T = -1;
                
            for (i = 0; i < N; i++)
                {
                    Max 
            = -INF;
                    
            for (j = 0; j < N; j++)
                    {
                        
            if (!combine[j] && !vis[j] && wet[j] > Max)
                        {
                            tmp 
            = j;
                            Max 
            = wet[j];
                        }
                    }
                    
            if (T == tmp) return;
                    S 
            = T;
                    T 
            = tmp;
                    minCut 
            = Max;
                    vis[tmp] 
            = 1;
                    
            for (j = 0; j < N; j++)
                    {
                        
            if (!combine[j] && !vis[j])
                        {
                            wet[j] 
            += map[tmp][j];
                        }
                    }
                }
            }
            int Stoer_Wagner()
            {
                
            int i, j;
                memset(combine, 
            0sizeof(combine));
                
            int ans = INF;
                
            for (i = 0; i < N - 1; i++)
                {
                    Search();
                    
            if (minCut < ans) ans = minCut;
                    
            if (ans == 0return 0;
                    combine[T] 
            = 1;
                    
            for (j = 0; j < N; j++)
                    {
                        
            if (!combine[j])
                        {
                            map[S][j] 
            += map[T][j];
                            map[j][S] 
            += map[j][T];
                        }
                    }
                }
                
            return ans;
            }
            int main()
            {
                
            int a, b, c, M;
                
            while(scanf("%d%d"&N, &M) != EOF)
                {
                    memset(map, 
            0sizeof(map));
                    
            while(M--)
                    {
                        scanf(
            "%d%d%d"&a, &b, &c);
                        map[a][b] 
            += c;
                        map[b][a] 
            += c;
                    }
                    printf(
            "%d\n", Stoer_Wagner());
                }
                
            return 0;
            }
            posted on 2011-10-15 22:10 LLawliet 閱讀(220) 評論(0)  編輯 收藏 引用 所屬分類: 網絡流
            亚洲а∨天堂久久精品9966| 亚洲AV无码久久精品成人| 国内精品久久久久久不卡影院| 91久久精品国产成人久久| yy6080久久| 久久婷婷国产麻豆91天堂| 欧美一区二区久久精品| 久久er国产精品免费观看2| 亚洲人成无码www久久久| 2021少妇久久久久久久久久| 色偷偷91久久综合噜噜噜噜| 婷婷综合久久狠狠色99h| 一级女性全黄久久生活片免费| 久久这里只精品国产99热| 四虎国产精品成人免费久久| 久久精品国产亚洲Aⅴ蜜臀色欲| 人妻无码αv中文字幕久久| 欧美色综合久久久久久 | 四虎国产精品成人免费久久| 国产精品一区二区久久不卡| 久久久久久久女国产乱让韩| 欧美精品一区二区久久| 狠狠人妻久久久久久综合| 国内精品久久久久久野外| 国产精品美女久久久m| 无码人妻久久一区二区三区免费丨| 久久这里有精品视频| 99久久人人爽亚洲精品美女| 久久综合狠狠综合久久激情 | 欧美亚洲日本久久精品| 精品久久久久久久中文字幕| 99久久免费国产精品| 国产视频久久| 久久国产三级无码一区二区| 国产99久久九九精品无码| 一本伊大人香蕉久久网手机| 青青草原综合久久大伊人精品| 久久最新精品国产| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久国产亚洲精品| 久久国产劲爆AV内射—百度|