题意弄了半天:

给出一个有向图,带边权,src,dst. 求出src到dst的最大流,再求出从src到dst流量最大的路径的流量,求它们的比值。

 #include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#define oo 0x3f3f3f3f
#define maxn 1010
using namespace std; struct Edge {
int u, v, f, cap;
Edge( int u, int v, int f, int cap ):u(u),v(v),f(f),cap(cap){}
};
struct Dinic {
int n, src, dst;
vector<Edge> edge;
vector<int> g[maxn];
int dep[maxn], cur[maxn], sig; void init( int n, int src, int dst ) {
this->n = n;
this->src = src;
this->dst = dst;
for( int u=; u<=n; u++ )
g[u].clear();
edge.clear();
}
void add_edge( int u, int v, int f ) {
g[u].push_back( edge.size() );
edge.push_back( Edge(u,v,f,f) );
g[v].push_back( edge.size() );
edge.push_back( Edge(v,u,,f) );
}
bool bfs() {
queue<int> qu;
memset( dep, , sizeof(dep) );
qu.push( src );
dep[src] = ;
while( !qu.empty() ) {
int u=qu.front();
qu.pop();
for( int t=; t<g[u].size(); t++ ) {
Edge &e = edge[g[u][t]];
if( e.f && !dep[e.v] ) {
dep[e.v] = dep[e.u]+;
qu.push( e.v );
}
}
}
return dep[dst];
}
int dfs( int u, int a, int minc ) {
if( u==dst || a== ) {
sig = max( minc, sig );
return a;
}
int remain=a, past=, na;
for( int &t=cur[u]; t<g[u].size(); t++ ) {
Edge &e = edge[g[u][t]];
Edge &ve = edge[g[u][t]^];
if( dep[e.v]==dep[e.u]+ && (na=dfs(e.v,min(remain,e.f),min(minc,e.cap))) ) {
remain -= na;
past += na;
e.f -= na;
ve.f += na;
if( remain== ) break;
}
}
return past;
}
void maxflow( int &tot, int &sig ) {
tot = sig = ;
this->sig = ;
while( bfs() ) {
memset( cur, , sizeof(cur) );
tot += dfs(src,oo,oo);
}
sig = this->sig;
}
}; int n, m;
Dinic D;
int main() {
int T;
scanf( "%d", &T );
while( T-- ) {
int cas, src, dst;
scanf( "%d%d%d%d%d", &cas, &n, &m, &src, &dst );
src++, dst++;
D.init( n, src, dst );
for( int i=,u,v,w; i<=m; i++ ) {
scanf( "%d%d%d", &u, &v, &w );
u++, v++;
D.add_edge( u, v, w );
}
int tot, sig;
D.maxflow( tot, sig );
printf( "%d %.3lf\n", cas, double(tot)/double(sig) );
}
}

最新文章

  1. Spring+Mybatis基于注解整合Redis
  2. [转]CSS hack大全&amp;详解
  3. mongo快速翻页方法(转载)
  4. spring aop expression简单说明
  5. UML类图详细介绍
  6. jquery ui 插件-------------------------&gt;sortable
  7. VSS Get Latest Version 没有提示recursive的对话框解决
  8. 分治法求一个N个元素数组的逆序数
  9. 最简单的历史Hibernate获得短暂的
  10. 201521123077 《Java程序设计》第11周学习总结
  11. hadoop2.6.0实践:A03 例子验证
  12. Activity的状态保存
  13. C++多态、虚函数、纯虚函数、抽象类、虚基类
  14. Problem A: 重载字符的加减法
  15. Spring常用注解总结(3)
  16. 向量的L2范数求导
  17. Python3学习笔记05-数字
  18. Linux下安装oracle的过程
  19. django之admin源码解析
  20. Lab 3-4

热门文章

  1. IDEA常见错误
  2. uboot之---make smdk2410_config命令详细解析
  3. Machine Learning系列--CRF条件随机场总结
  4. mysql delete 注意
  5. 进程一些命令pstree,ps,pstack,top
  6. Linux 用户篇——用户管理命令之id、whoami、su、chage
  7. GO语言Windows下Liteide
  8. Geoffrey Hinton获得IEEE的麦克斯韦奖的颁奖辞
  9. NIO-5补充
  10. function(函数)中的动态参数