zoukankan      html  css  js  c++  java
  • POJ 1273

     1 #include<iostream>
     2 #include<stdio.h>
     3 #define big_num 1000000000
     4 #define MAXN 250
     5 #include"queue"
     6 using namespace std;
     7 
     8 int _m[MAXN][MAXN];
     9 int Ford_fulkerson(int m, int s, int t, int &F,int g[][MAXN]);
    10 int find_path(int m, int s,int t,int pre[MAXN],int g[][MAXN]);
    11 
    12 int main()
    13 {
    14     //freopen("acm.acm","r",stdin);
    15     int p;
    16     int s;
    17     int i;
    18     int j;
    19     int w;
    20     int m;
    21     int n;
    22     while(cin>>s>>p)
    23     {
    24         memset(_m,0,sizeof(_m));
    25     //    memset(pre,0,sizeof(pre));
    26         for(i = 0; i < s; ++ i)
    27         {
    28             cin>>m>>n;
    29             cin>>w;
    30             _m[m-1][n-1] += w;
    31         }
    32         int F = 0;
    33         while(Ford_fulkerson(p,0,p-1,F,_m));
    34         cout<<F<<endl;
    35     }
    36     system("PAUSE");
    37 }
    38 /////////////////////////////////////////////////////////////
    39 //网络流(Ford_fulkerson算法)自己写的模板~
    40 //#define big_num 1000000000
    41 //#include"queue"
    42 //int _m[MAXN][MAXN];
    43 /////////////////////////////////////////////////////////////
    44 int find_path(int m, int s,int t,int pre[MAXN],int g[][MAXN])
    45 {
    46     queue<int> q;        
    47     int * mark = new int[m];
    48     memset(mark,0,sizeof(int)*m);
    49     int x;
    50     mark[s] = 1;               
    51     int i;
    52     q.push(s);                   
    53     while(!q.empty())        
    54     {
    55         x = q.front();            
    56         for(i = 0; i < m; i++)
    57         {
    58             if(g[x][i] > 0 && mark[i] == 0)
    59             {                        
    60                 mark[i] = 1;
    61                 pre[i] = x;    
    62                 if(i == t)            
    63                     return 1;
    64                 q.push(i);        
    65             }
    66         }
    67     q.pop();
    68     }
    69     delete [] mark;
    70     return 0;
    71 }
    72 int Ford_fulkerson(int n, int s, int t, int &F,int g[][MAXN])
    73 {
    74     int i;
    75     int min;
    76     int * pre = new int[n];                    
    77     if(find_path(n,s,t,pre, g) == 0)
    78     {
    79         delete [] pre;
    80         return 0;
    81     }
    82     min = big_num;                
    83     for(i = t; i != s; i = pre[i])
    84         if(g[pre[i]][i] < min)
    85         {
    86             min = g[pre[i]][i];
    87         }
    88     for(i = t; i != s; i = pre[i])
    89     {
    90         g[pre[i]][i] -= min;
    91         g[i][pre[i]] += min;
    92     }
    93     F += min;             
    94     delete []pre;
    95     return 1;
    96 }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    学习C#的一些笔记
    SQL高级应用
    SQL SERVER 视图
    ES5 Study
    面试官技巧
    WebServicexml操作
    用JS和HTML写自己的文本编辑器
    解决Win7 x64 VS2010调试网站出现 vs2010 未能将脚本调试器附加到计算机上的进程。已附加了一个调试器
    Microsoft.Practices.Unity实现代码依赖注入、XML依赖注入和AOP切面编程
    无法对数据库'XXX' 执行删除,因为它正用于复制"的解决方法
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563348.html
Copyright © 2011-2022 走看看