Advertisement
LinKin

Stoer-wagner

Nov 17th, 2011
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. /*
  2.  * Algorithm : Stoer Wagner all pair Min Cut
  3.  * Complextity : O( n^3 )
  4.  * Note : All vertex is 1 based indexing
  5.  */
  6. #include<stdio.h>
  7. #include<algorithm>
  8. using namespace std;
  9. #define MAX_V 1007
  10. #define INF 777777777
  11. long nV,nE;
  12. long Cap[MAX_V+7][MAX_V+7];
  13. long Dist[MAX_V+7],Done[MAX_V+7];
  14. long Best,Ind;
  15.  
  16. long AllPairMinCut( void )
  17. {
  18.     long i,j,u,v,Ans = INF,N = nV;
  19.     while( N > 1 ){
  20.         memset( Dist,0,sizeof(Dist));
  21.         memset( Done,0,sizeof(Done));
  22.         for( i=1;i<=N;i++){
  23.             Best = Ind = -1;
  24.             for( j=1;j<=N;j++ ){
  25.                 if(!Done[j] && Dist[j] > Best){
  26.                     Best = Dist[j];
  27.                     Ind = j;
  28.                 }
  29.             }
  30.             if( i+1==N ) u = Ind;
  31.             if( i==N ){
  32.                 v = Ind;
  33.                 Ans = min( Ans,Best );
  34.             }
  35.             Done[Ind] = 1;
  36.             for( j=1;j<=N;j++){
  37.                 Dist[j] += Cap[Ind][j];
  38.             }
  39.         }
  40.         if( u > v) swap( u,v);
  41.         for( i=1;i<=N;i++ ){
  42.             Cap[u][i] += Cap[v][i];
  43.             Cap[i][u] += Cap[i][v];
  44.         }
  45.         for( i=1;i<=N;i++){
  46.             Cap[v][i] = Cap[N][i];
  47.             Cap[i][v] = Cap[i][N];
  48.         }
  49.         N--;
  50.     }
  51.     return Ans;
  52. }
  53.  
  54. int main( void)
  55. {
  56.     memset(Cap,0,sizeof(Cap));
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement