POJ - 2914 Minimum Cut

Posted Achen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ - 2914 Minimum Cut相关的知识,希望对你有一定的参考价值。

传送门

全局最小割

stoer_wagner

论打板选手的自我修养

技术分享图片
 1 //Achen
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<vector>
 7 #include<cstdio>
 8 #include<queue>
 9 #include<cmath>
10 const int N=507,inf=0x7fffffff;
11 typedef long long LL;
12 using namespace std;
13 int n,m,eg[N][N];
14 
15 template<typename T>void read(T &x)  {
16     char ch=getchar(); x=0; T f=1;
17     while(ch!=-&&(ch<0||ch>9)) ch=getchar();
18     if(ch==-) f=-1,ch=getchar();
19     for(;ch>=0&&ch<=9;ch=getchar()) x=x*10+ch-0; x*=f;
20 }
21 
22 int vis[N],dis[N],id[N];
23 int stoer_wagner(int n) {
24     int res=inf;
25     for(int i=0;i<n;i++) id[i]=i;
26     while(n>1) {
27         memset(vis,0,sizeof(vis));
28         memset(dis,0,sizeof(dis));
29         int pr=0;
30         vis[id[pr]]=1;
31         for(int i=1;i<n;i++) {     
32             int k=-1;
33             for(int j=1;j<n;j++) if(!vis[id[j]]) {
34                 dis[id[j]]+=eg[id[pr]][id[j]];
35                 if(k==-1||dis[id[j]]>dis[id[k]]) k=j;
36             }
37             vis[id[k]]=1;
38             if(i==n-1) {
39                 res=min(res,dis[id[k]]);
40                 for(int j=0;j<n;j++) {
41                     eg[id[pr]][id[j]]+=eg[id[k]][id[j]];
42                     eg[id[j]][id[pr]]+=eg[id[j]][id[k]];
43                 }
44                 id[k]=id[--n];
45             }
46             pr=k;
47         }
48     }
49     return res;
50 }
51 
52 int main() {
53     while(scanf("%d%d",&n,&m)==2) {
54         memset(eg,0,sizeof(eg));
55         for(int i=1;i<=m;i++) {
56             int x,y,z;
57             read(x); read(y); read(z);
58             eg[x][y]+=z; eg[y][x]+=z;
59         }
60         printf("%d\n",stoer_wagner(n));
61     }
62     return 0;
63 }
View Code

 

以上是关于POJ - 2914 Minimum Cut的主要内容,如果未能解决你的问题,请参考以下文章

POJ - 2914 Minimum Cut

POJ 2914 - Minimum Cut - 全局最小割,Stoer-Wagner算法

POJ - 2914 Minimum Cut(全局最小割-Stoer_Wagner)

POJ2914 (未解决)无向图最小割|Stoer-Wagner算法|模板

HDU6214 Smallest Minimum Cut

hdu 6214 Smallest Minimum Cut[最大流]