ZOJ2532判断边是否是割集中的边
Internship
Time Limit: 5 Seconds Memory Limit: 32768 KB
CIA headquarter collects data from across the country through its classified network. They have been using optical fibres long before it's been deployed on any civilian projects. However they are still under a lot pressure recently because the data are growing rapidly. As a result they are considering upgrading the network with new technologies that provide a few times wider bandwidth. In the experiemental stage, they would like to upgrade one segment of their original network in order to see how it performs. And as a CIA intern it's your responsibility to investigate which segment could actually help increase the total bandwidth the headquarter receives, suppose that all the cities have infinite data to send and the routing algorithm is optimized. As they have prepared the data for you in a few minutes, you are told that they need the result immediately. Well, practically immediately.
Input
Input contains multiple test cases. First line of each test case contains three integers n, m and l, they represent the number of cities, the number of relay stations and the number of segments. Cities will be referred to as integers from 1 to n, while relay stations use integers from n+1 to n+m. You can saves assume that n + m <= 100, l <= 1000 (all of them are positive). The headquarter is identified by the integer 0.
The next l lines hold a segment on each line in the form of a b c, where a is the source node and b is the target node, while c is its bandwidth. They are all integers where a and b are valid identifiers (from 0 to n+m). c is positive. For some reason the data links are all directional.
The input is terminated by a test case with n = 0. You can safely assume that your calculation can be housed within 32-bit integers.
Output
For each test print the segment id's that meets the criteria. The result is printed in a single line and sorted in ascending order, with a single space as the separator. If none of the segment meets the criteria, just print an empty line. The segment id is 1 based not 0 based.
Sample Input
2 1 3
1 3 2
3 0 1
2 0 1
2 1 3
1 3 1
2 3 1
3 0 2
0 0 0
Sample Output
2 3
<hey here is an invisible empty line> 有n个城市和m个中转站,有一个数据接收站(编号为0),城市从1---n编号,中转站从n+1---m编号,数据从每个城市发出最后到接收站接受,现在问提高哪些边中一条的容量使得接收站接收的数据增加 http://www.cnblogs.com/staginner/archive/2012/08/11/2633751.html
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=0x7fffffff;
const int MAXD=;
const int MAXM=;
int N,M,L,e,first[MAXD],next[MAXM],u[MAXM],v[MAXM],flow[MAXM];
int S,T,d[MAXD],q[MAXD],viss[MAXD],vist[MAXD];
int ch[],ans[MAXD],A;
void add(int x,int y,int z){
u[e]=x,v[e]=y,flow[e]=z;
next[e]=first[x],first[x]=e++;
}
void init(){
int x,y,z;
T=,S=N+M+;
memset(first,-,sizeof(first));
e=;
for(int i=;i<L;++i) {
scanf("%d%d%d",&x,&y,&z);
add(x,y,z),add(y,x,);
}
for(int i=;i<=N;++i) add(S,i,INF),add(i,S,);
}
bool bfs(){
int r=;
memset(d,-,sizeof(d));
d[S]=,q[r++]=S;
for(int i=;i<r;++i) for(int j=first[q[i]];j+;j=next[j]){
if(flow[j]&&d[v[j]]==-) {
d[v[j]]=d[q[i]]+,q[r++]=v[j];
if(v[j]==T) return true;
}
}
return false;
}
int dfs(int cur,int a){
if(cur==T||!a) return a;
for(int i=first[cur];~i;i=next[i])
if(flow[i]&&d[v[i]]==d[cur]+)
if(int t=dfs(v[i],std::min(a,flow[i]))) {
flow[i]-=t;flow[i^]+=t;
return t;
}
return ;
}
void dinic(){
while(bfs()) dfs(S,INF);
}
void DFS(int cur,int *vis,int k){
vis[cur]=;
for(int i=first[cur];i+;i=next[i]) if(!vis[v[i]]&&flow[i^k]) DFS(v[i],vis,k);
}
void solve(){
dinic();
memset(viss,,sizeof(viss));
memset(vist,,sizeof(vist));
DFS(S,viss,),DFS(T,vist,);
A=;
for(int i=;i<L;++i) if(flow[i<<]==&&viss[u[i<<]]&&vist[v[i<<]]) ans[A++]=i+;
if(A) {
printf("%d",ans[]);
for(int i=;i<A;++i) printf(" %d",ans[i]);
}
puts("");
}
int main(){
while(scanf("%d%d%d",&N,&M,&L),N){
init();
solve();
}
}
ZOJ2532判断边是否是割集中的边的更多相关文章
- JS判断网页是否在微信中打开/
JS判断网页是否在微信中打开,代码如下: <script type="text/javascript"> function is_weixn(){ var ua = n ...
- stop() 是用于停止动画 :animated 用于判断动画是否在进行中
stop() 是用于停止动画 if($("element").is(":animated")) 用于判断动画是否在进行中
- sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...
- Js的iframe相关问题,如何判断当前是否在iframe中,iframe和它的父窗口如何通信
一.前言: 在web中,为了丰富我们的内容,往往需要引用其它HTML文件,这时候就需要用到 iframe 标签,本文就主要记录一下使用iframe所需要注意的问题 iframe 所使用的环境(笔者所遇 ...
- 判断页面是否在iframe中,
//判断页面是否在iframe中,是的话就跳出iframe框,多用于登录页 ,将此段代码放到要做判断的页面上即可 if (window != top) { top.location.href = l ...
- 分享一段js,判断是否是在iPhone中的Safari浏览器打开的页面
头部引用jquery包 将下面的一段js写在</body>的前面 <script type="text/javascript"> var ua = navi ...
- 从a文件判断是否删除b文件中的行(sed示例)
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html test.xml文件很大,内容结构如下: <?xml v ...
- js 判断元素是否在列表中
/** * 使用循环的方式判断一个元素是否存在于一个数组中 * @param {Object} arr 数组 * @param {Object} value 元素值 */ function isInA ...
- Codeforces Round #306 (Div. 2) A. Two Substrings【字符串/判断所给的字符串中是否包含不重叠的“BA” “AB”两个字符串】
A. Two Substrings time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
随机推荐
- Scala的自定义类型标记
Scala的自定义类型标记 Scala中有很多千奇百怪的符号标记,看起来是那么的独特,就像是一杯dry martini-好像黑夜中的萤火虫,那么耀眼,那么出众. 好了言归正传,这一篇文章我们会讲一下S ...
- HashMap源码解析JDK8
一.HashMap基础 1.1 HashMap的定义 我们先看一下HashMap的定义: public class HashMap<K,V> extends AbstractMap< ...
- SpringBoot中使用Fastjson/Jackson对JSON序列化格式化输出的若干问题
来源 :https://my.oschina.net/Adven/blog/3036567 使用springboot-web编写rest接口,接口需要返回json数据,目前国内比较常用的fastjso ...
- 徐州A
#include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...
- Mark一篇介绍Java垃圾回收和JVM参数设置的文章
贴出原文连接:重磅!Java 内存管理白皮书,读完它,java 内存管理的问题完全 NO Problem! 读了一遍,对并行的垃圾回收还不是很理解,先mark,消化消化再学习. 文章说的一些JVM设置 ...
- Jenkins 介绍
持续集成: 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证 ...
- PinPoint APM搭建全过程
Pinpoint简介 Pinpoint是一款对Java编写的大规模分布式系统的APM工具,有些人也喜欢称呼这类工具为调用链系统.分布式跟踪系统.我们知道,前端向后台发起一个查询请求,后台服务可能要调用 ...
- spring类型转换
如果表单提交的时候,有的字段是字符串类型,但是后台接收到的时候是其他类型(比如日期类型),我们就可以使用类型转换来把字符串类型转换为需要的类型.当字符串类型和后台的日期类型匹配的时候,也可以不做转换, ...
- spring mvc 中使用session
举例:用户登录成功之后,把用户对象放置到session中 第一步,用户登录成功之后把用户对象首先放到Model中 第二步,要在控制器上加SessionAttributes注解,把放到model中的对象 ...
- 多表同步 ES 的问题
原始需求 对跨业务域数据提供联查搜索能力. 比如:对退款单提供根据退款单.退款状态.发货状态的联查,其中退款状态和发货状态是跨业务域. 比如:对订单提供根据订单号.订单状态.退款状态的联查,其中订单状 ...