• <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的最大生成樹,具體的網(wǎng)上有很多,可以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 閱讀(213) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)流
            久久影院综合精品| 久久A级毛片免费观看| 久久高清一级毛片| 偷窥少妇久久久久久久久| 亚洲精品乱码久久久久久久久久久久 | 国产一级做a爰片久久毛片| 久久久精品视频免费观看| 久久久久国产精品熟女影院| 久久婷婷久久一区二区三区 | 99精品久久精品| 国内精品久久久久久久久电影网| 国产精品狼人久久久久影院| 久久久久久久久久久久中文字幕| 久久香蕉一级毛片| 色综合久久无码五十路人妻| 久久精品女人天堂AV麻| 国产69精品久久久久777| 精产国品久久一二三产区区别 | 香蕉久久久久久狠狠色| 久久久WWW成人| 久久精品国产亚洲网站| 色欲综合久久中文字幕网| 久久国产成人午夜AV影院| 99久久久国产精品免费无卡顿| 国产美女久久精品香蕉69| 青青草原综合久久大伊人| 久久免费99精品国产自在现线| 看全色黄大色大片免费久久久 | 久久乐国产精品亚洲综合| 久久精品国产只有精品2020| 国产高潮国产高潮久久久| 色综合久久无码中文字幕| 久久久久久久久66精品片| 四虎影视久久久免费观看| 欧美精品丝袜久久久中文字幕| 精品国产91久久久久久久a| 久久精品无码一区二区三区| 亚洲伊人久久大香线蕉苏妲己| 人妻系列无码专区久久五月天| 精品久久久久中文字| 色欲综合久久躁天天躁|