/**
[最大流] hdu 4240 Route Redundancy
题意:除了要求出最大流之外,还要求另一个最小车辆的最大值M,
最小车辆的定义是 在一条可行流的路径上最小的边权(初始边权)
技巧在与求增广路径的方法,主要是第一次找的方法,因为M == 第一次可行的具有最大压入流量的增广路径的压入的流量
lowc[i]表示以i为终点的包含M的压入量,注意更新的方式,类似prim或是dijkstra算法
*/
#include <stdio.h>
#include <queue>
#include <string.h>
#include <algorithm>
using namespace std;
typedef pair<int,int > Pii;
#define MK make_pair
const int N = 101,INF = 100000000;
int g[N][N],pre[N],n;
int path(int s,int t)
{
int lowc[N],vis[N],i,u,v,dd = INF;
priority_queue < Pii > que;
Pii p;
memset(vis,0,sizeof(vis));
memset(pre,-1,sizeof(pre));
for(i = 0; i < n; ++i)
lowc[i] = INF;
que.push(MK(INF,s));
while(!que.empty())
{
u = que.top().second;
dd = que.top().first;
que.pop();
if(u == t)
return lowc[t];
if(
[最大流] hdu 4240 Route Redundancy
最新推荐文章于 2013-08-12 15:47:39 发布