把有向图修改成无向图,并保证每条边的流量守恒并满足有向容量(即abs(flow(u,v) - flow(v,u)) <= 1)满足限制。

得到最大流,根据残流输出答案。

因为最后少了'\n'而WA...

#include<bits/stdc++.h>
using namespace std;
const int N = ,M = N*(N-);
int n,m;
int hd[N],nx[M],to[M],cap[M],ect; inline void addEdge(int u,int v,int c = )
{
nx[ect] = hd[u];
to[ect] = v;
cap[ect] = c;
hd[u] = ect++;
} int S,T;
int vis[N],clk;
int lv[N],q[N];
int cur[N]; bool bfs()
{
int l = ,r = ;
clk++;
q[r++] = S; vis[S] = clk; lv[S] = ;
while(l<r){
int u = q[l++];
for(int i = hd[u]; ~i; i = nx[i]){
int v = to[i];
if(vis[v] != clk && cap[i]> ){
vis[v] = clk;
lv[v] = lv[u]+;
q[r++] = v;
}
}
}
return vis[T] == clk;
} int aug(int u,int a)
{
if(u == T||!a) return a;
int flow = ,f;
for(int &i = cur[u]; ~i; i = nx[i]){
int v = to[i];
if(lv[v] == lv[u]+ && (f = aug(v,min(cap[i],a)))>){
cap[i] -= f; cap[i^] += f;
a -= f; flow += f;
if(!a) break;
}
}
return flow;
}
const int INF = 0x3f3f3f3f;
int MaxFlow()
{
int flow = ;
while(bfs()){
memcpy(cur,hd,sizeof(hd));
flow += aug(S,INF);
}
return flow;
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
scanf("%d%d",&n,&m);
memset(hd,-,sizeof(hd));
for(int i = ; i < m; i++){
int u,v; scanf("%d%d",&u,&v);
addEdge(v,u);
addEdge(u,v);
}
scanf("%d%d",&S,&T);
printf("%d\n",MaxFlow());
vector<int> ans;
for(int i = ; i < m; i++){
if(!cap[i<<]) ans.push_back(i+);
}
printf("%d\n",(int)ans.size());
for(auto a:ans){
printf("%d\n",a);
}
return ;
}

Aizu 2304 Reverse Roads(无向流)的更多相关文章

  1. Aizu 2304 Reverse Roads 费用流

    Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  2. Aizu 2304 Reverse Roads

    原题链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2304 题意: 给你一个网络,其中每条边的容量是1,你可以通过调整边的方向 ...

  3. 【Flink】流-表概念

    title: Flink流-表概念 date: 2017-12-12 14:48:16 categories: technique tags: Flink Flink Streaming Dynami ...

  4. 网络流 最大流—最小割 之SAP算法 详解

    首先引入几个新名词: 1.距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度). 设点i的标号为level[i],那么如果将满足level[i]=l ...

  5. UNIX高级环境编程(6)标准IO函数库 - 流的概念和操作

    标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题.   1 ...

  6. Python 列表 reverse() 方法

    描述 Python 列表 reverse() 方法对列表中的元素进行反向排序. 语法 reverse() 方法语法: L.reverse() 参数 无. 返回值 该方法没有返回值,但是会对列表的元素进 ...

  7. 流Stream

    System.IO 提供了一个抽象类Stream , Stream类 支持对字节的读写操作.所谓的“流”,指的是Stream,也就是所谓的一个文件区.这个文件区中存储着的信息可以是在内存中,也可以是在 ...

  8. IO Streams:缓冲流

    我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...

  9. 【翻译】Flink Table Api & SQL — 流概念

    本文翻译自官网:Streaming Concepts  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/st ...

随机推荐

  1. ARC085F(动态规划,线段树)

    #include<bits/stdc++.h>using namespace std;const int maxn = 0x3f3f3f3f;int mn[801000];int cost ...

  2. 括号序列(区间dp)

    括号序列(区间dp) 输入一个长度不超过100的,由"(",")","[",")"组成的序列,请添加尽量少的括号,得到一 ...

  3. 洛谷P1038 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  4. [Xcode 实际操作]三、视图控制器-(12)在Storyboard中使用集合控件

    目录:[Swift]Xcode实际操作 本文将演示集合控件在故事板中的使用. 在控制器根视图上点击鼠标,以选择该根视图. 现在往根视图中添加一个集合视图. 点击[库面板]图标,打开控件库面板 在控件库 ...

  5. JSON 的使用方法

    JSON--JavaScript Object Notation,是一种轻量级的数据交互格式,本质是特定格式的字符串,相比xml更简洁,现在是客户端与服务器端交互的最常用选择,已经很少用xml了 JS ...

  6. 再看thinkphp5分页类使用

    之前使用tp5的分页paginate类时只用到了第一个参数,也就是每页显示多少行 今天又仔细看了下手册和paginate类,发现paginate可传入的参数有很多,可以满足更多需求 比如可以指定分页的 ...

  7. SMTP服务器配置

    Windows Server 2012/2012 R2:安装和配置 SMTP 服务器 安装 SMTP 服务器 以下是安装 SMTP 服务器功能的步骤: 1. 打开“服务器管理器”:单击键盘上的 Win ...

  8. sysbench压力测试总结

    sysbench压力测试工具简介sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Orac ...

  9. F. Gourmet and Banquet(贪心加二分求值)

    题目链接:http://codeforces.com/problemset/problem/589/F A gourmet came into the banquet hall, where the ...

  10. jdk代理

    接口: public interface IUserService { public void saveUser(String username,String password); public vo ...