poj 3549 基本网络流
2011-08-08 09:58
190 查看
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <deque> #include <algorithm> using namespace std; int cap[1000][1000]; int flow[1000][1000]; int a[1000]; int f; int p[1000]; const int inf = 0x7fffffff; void Edmonds_karp(int N, int M ) { deque<int>q; int t, u, v, x; memset(flow, 0, sizeof(flow)); memset(p, 0, sizeof(p)); f = 0; for (; ; ) { memset(a, 0, sizeof(a)); a[1] = inf; q.push_back(1); while (!q.empty( )) { u = q.front( ); q.pop_front( ); for( v = 1; v <= M; v++) if (!a[v] && cap[u][v] > flow[u][v]) { p[v] = u; q.push_back(v); a[v] = min(a[u], cap[u][v] - flow[u][v]); } } if (a[M] == 0 ) break; for ( u = M; u != 1; u = p[u]) { flow[u][p[u]] -= a[M]; flow[p[u]][u] += a[M]; } f += a[M]; } } int main( ) { int N, M, i, j, a, b, c; while (scanf("%d%d", &N, &M ) != EOF ) { memset(cap, 0, sizeof(cap)); f = 0; for (i = 0; i < N; i++) { scanf("%d%d%d", &a, &b, &c); cap[a][b] += c; } Edmonds_karp(1, M); printf("%d\n",f); } return 0; }
相关文章推荐
- POJ 1273(HDU 1532) Drainage Ditches|HDU 3549 Flow Problem|很典型&&裸的网络流
- 网络编程(1)--Java的基本网络支持
- Linux基本配置和管理 1---- Linux网络基本配置
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 一些基本的命令往往可以在保护网络安全上起到很大的作用
- 菜鸟学习linux笔记与练习-----第二天。一些基本命令以及初级网络配置
- Linux:基本网络配置(基础篇)
- 网络开发基本知识
- 网络编程(二)--基本操作
- NETBIOS 网络基本输入/输出系统协议
- 【Android Training - Connectivity】基本网络操作 [ Lesson 0 - 章节概览 ]
- REHL5的网络基本配置
- 计算机网络基本知识
- ACE中网络通讯编程基本架构
- 【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法
- 网络最基本的易混淆知识
- 计算机网络基本概念
- linux C网络编程基本流程
- poj 3624 最基本01背包问题
- Linux入门-6 Linux网络基本配置