POJ 1273
2015-06-09 13:53
330 查看
#include<iostream> #include<stdio.h> #define big_num 1000000000 #define MAXN 250 #include"queue" using namespace std; int _m[MAXN][MAXN]; int Ford_fulkerson(int m, int s, int t, int &F,int g[][MAXN]); int find_path(int m, int s,int t,int pre[MAXN],int g[][MAXN]); int main() { //freopen("acm.acm","r",stdin); int p; int s; int i; int j; int w; int m; int n; while(cin>>s>>p) { memset(_m,0,sizeof(_m)); // memset(pre,0,sizeof(pre)); for(i = 0; i < s; ++ i) { cin>>m>>n; cin>>w; _m[m-1][n-1] += w; } int F = 0; while(Ford_fulkerson(p,0,p-1,F,_m)); cout<<F<<endl; } system("PAUSE"); } ///////////////////////////////////////////////////////////// //网络流(Ford_fulkerson算法)自己写的模板~ //#define big_num 1000000000 //#include"queue" //int _m[MAXN][MAXN]; ///////////////////////////////////////////////////////////// int find_path(int m, int s,int t,int pre[MAXN],int g[][MAXN]) { queue<int> q; int * mark = new int[m]; memset(mark,0,sizeof(int)*m); int x; mark[s] = 1; int i; q.push(s); while(!q.empty()) { x = q.front(); for(i = 0; i < m; i++) { if(g[x][i] > 0 && mark[i] == 0) { mark[i] = 1; pre[i] = x; if(i == t) return 1; q.push(i); } } q.pop(); } delete [] mark; return 0; } int Ford_fulkerson(int n, int s, int t, int &F,int g[][MAXN]) { int i; int min; int * pre = new int ; if(find_path(n,s,t,pre, g) == 0) { delete [] pre; return 0; } min = big_num; for(i = t; i != s; i = pre[i]) if(g[pre[i]][i] < min) { min = g[pre[i]][i]; } for(i = t; i != s; i = pre[i]) { g[pre[i]][i] -= min; g[i][pre[i]] += min; } F += min; delete []pre; return 1; }
相关文章推荐
- iOS开发常用快捷键
- 【资料整理】cisco [cli, static, rip, eigrp, ospf]
- c#语法总结1
- kindeditor html代码过滤(丢失某些HTML标签)
- Java线程_wait,sleep,notify,notifyall,join
- catch the cow 抓住小黄牛
- Oracle 工艺结构
- Array-缩小方法
- log4net 配置
- POJ 1258
- 虚拟化、大数据、云计算、事、移动互联网和传统之间的关系网络
- Redis命令学习-string类型操作
- CentOS下系统时间同步和时区的修改和设置
- linux 时间同步的2种方法
- 【资料整理】cisco [acl]
- 【ITOO高校云平台】——EF框架:DatabaseFirst
- 辛星浅析一次ajax的实现过程
- 用VIM删除空行
- POJ 1247
- POJ 1243