zoukankan      html  css  js  c++  java
  • HDU 3002

    无向图最小割。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 const int MAXN=150;
     7 const int inf=10000000;
     8 int vis[MAXN],combine[MAXN],wan[MAXN];
     9 int map[MAXN][MAXN];
    10 int n,m,t;
    11 int mincut,S,T;
    12 
    13 void seacut(){
    14     int Max; int p;
    15     S=T=-1;
    16     memset(vis,0,sizeof(vis));
    17     memset(wan,0,sizeof(wan));
    18     for(int i=0;i<n;i++){
    19         Max=-inf;
    20         for(int j=0;j<n;j++){
    21             if(!combine[j]&&!vis[j]&&wan[j]>Max){
    22                 Max=wan[j]; p=j;
    23             }
    24         }
    25     //    cout<<p<<endl;
    26         if(p==T) return;
    27         S=T;T=p;
    28         vis[T]=1;
    29         for(int j=0;j<n;j++){
    30             if(!combine[j]&&!vis[j]){
    31                 wan[j]+=map[T][j];
    32             }
    33         }
    34     }
    35 }
    36 
    37 void storewanger(){
    38     mincut=inf;
    39     memset(combine,0,sizeof(combine));
    40     for(int i=0;i<n-1;i++){
    41         seacut();
    42         if(wan[T]<mincut) mincut=wan[T];
    43         if(mincut==0) return;
    44         combine[T]=1;
    45         for(int j=0;j<n;j++){
    46             if(!combine[j]){
    47                 map[S][j]+=map[T][j];
    48                 map[j][S]+=map[j][T];
    49             }
    50         }
    51     }
    52 }
    53 
    54 int main(){
    55     int u,v,w;
    56     while(scanf("%d%d",&n,&m)!=EOF){
    57         memset(map,0,sizeof(map));
    58         for(int i=0;i<m;i++){
    59             scanf("%d%d%d",&u,&v,&w);
    60             map[u][v]+=w;
    61             map[v][u]+=w;
    62         //    cout<<"YES"<<endl;
    63         }
    64     //    cout<<"YES"<<endl;
    65         storewanger();
    66         printf("%d
    ",mincut);
    67     }
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    UVa532 Dungeon Master 三维迷宫
    6.4.2 走迷宫
    UVA 439 Knight Moves
    UVa784 Maze Exploration
    UVa657 The die is cast
    UVa572 Oil Deposits DFS求连通块
    UVa10562 Undraw the Trees
    UVa839 Not so Mobile
    327
    UVa699 The Falling Leaves
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3859327.html
Copyright © 2011-2022 走看看