Luogu P1401 城市(二分+网络流)
题意
题目描述
N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最长的边的长度最小,边不能重复用。
输入输出格式
输入格式:
第1行三个整数N,M,T用空格隔开。
第2行到P+1行,每行包括三个整数Ai,Bi,Li表示城市Ai到城市Bi之间有一条长度为Li的道路。
输出格式:
输出只有一行,包含一个整数,即经过的这些道路中最长的路的最小长度。
输入输出样例
输入样例#1:
7 9 2
1 2 2
2 3 5
3 7 5
1 4 1
4 3 1
4 5 7
5 7 1
1 6 3
6 7 3
输出样例#1:
5
思路
这道题可以用并查集做。 --alecli
每条边最多走一遍,不就相当于对图跑一遍网络流,流量必须大于等于\(T\)吗?所以我们可以二分答案,对原图跑网络流,判断流量是否满足要求。
AC代码
#include<bits/stdc++.h>
using namespace std;
int n,m,t,ans,L=INT_MAX,R,cur[205],dep[205];
int cnt=1,top[205],to[160005],len[160005],cap[160005],rcap[160005],nex[160005];
int read()
{
int re=0;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) re=(re<<3)+(re<<1)+ch-'0',ch=getchar();
return re;
}
bool bfs(int lim)
{
memset(cur,0,sizeof cur);
memset(dep,0,sizeof dep);
cur[1]=top[1],dep[1]=1;
queue<int>Q;
Q.push(1);
while(!Q.empty())
{
int now=Q.front();Q.pop();
for(int i=cur[now];i;i=nex[i])
if(!dep[to[i]]&&len[i]<=lim&&cap[i])
{
cur[to[i]]=top[to[i]],dep[to[i]]=dep[now]+1;
Q.push(to[i]);
}
}
return dep[n]!=0;
}
int dfs(int now,int flow,int lim)
{
if(now==n) return flow;
int re=0;
for(int &i=cur[now];i;i=nex[i])
if(dep[to[i]]==dep[now]+1&&len[i]<=lim&&cap[i])
{
int lzq=dfs(to[i],min(flow,cap[i]),lim);
if(lzq)
{
re+=lzq,flow-=lzq;
cap[i]-=lzq,cap[i^1]+=lzq;
if(!flow) break;
}
}
return re;
}
bool check(int lim)
{
int tmp=0;
for(int i=1;i<=cnt;i++) cap[i]=rcap[i];
while(bfs(lim)) tmp+=dfs(1,INT_MAX,lim);
return tmp>=t;
}
int main()
{
n=read(),m=read(),t=read();
while(m--)
{
int x=read(),y=read(),z=read();
to[++cnt]=y,len[cnt]=z,cap[cnt]=rcap[cnt]=1,nex[cnt]=top[x],top[x]=cnt;
to[++cnt]=x,len[cnt]=z,cap[cnt]=rcap[cnt]=0,nex[cnt]=top[y],top[y]=cnt;
to[++cnt]=y,len[cnt]=z,cap[cnt]=rcap[cnt]=0,nex[cnt]=top[x],top[x]=cnt;
to[++cnt]=x,len[cnt]=z,cap[cnt]=rcap[cnt]=1,nex[cnt]=top[y],top[y]=cnt;
L=min(L,z),R=max(R,z);
}
while(L<=R)
{
int mid=(L+R)>>1;
if(check(mid)) ans=mid,R=mid-1;
else L=mid+1;
}
printf("%d",ans);
return 0;
}
Luogu P1401 城市(二分+网络流)的更多相关文章
- luogu P1401 城市
题目链接 luogu P1401 城市 题解 二分最小边权,dinic检验 代码 // luogu-judger-enable-o2 /* 二分最小边权,dinic检验 */ #include< ...
- hihoCoder 1389 Sewage Treatment 【二分+网络流+优化】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)
#1389 : Sewage Treatment 时间限制:2000ms 单点时限:2000ms 内存限制:256MB 描述 After years of suffering, people coul ...
- POJ 2455 Secret Milking Machine(搜索-二分,网络流-最大流)
Secret Milking Machine Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9658 Accepted: ...
- BZOJ_3993_[SDOI2015]星际战争_二分+网络流
BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进 ...
- 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流
题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...
- 【bzoj1822】[JSOI2010]Frozen Nova 冷冻波 计算几何+二分+网络流最大流
题目描述 WJJ喜欢“魔兽争霸”这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线 ...
- 【bzoj1733】[Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+网络流最大流
题目描述 Farmer John is constructing a new milking machine and wishes to keep it secret as long as possi ...
- 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流
题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...
- BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流
BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流 Description Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一 ...
随机推荐
- java 和 IntelliJ IDEA 的一些配置
jdk 的下载与配置https://jingyan.baidu.com/article/ca41422fe3b7261eae99edc6.html intellij IDEA软件java项目No SD ...
- CSIC_716_20191125【面向对象编程--类以及类的实例化】
面向对象编程:是一种编程思想 对象的定义:特征与功能的集合体 优点:可扩展性强 缺点:编程复杂度高,难度偏大 类的定义:一系列对象之间相同特征与技能的结合体 调用类的时候(实例化是时候),发生的事情: ...
- Centos 6.5 python版本升级到2.7.8
Centos6.5默认的 python版本是2.6 为了使用aliyuncli工具,直接用pip安装aliyuncli提示错误. 所以决定升级下python版本,但是yum依赖于python2.6,升 ...
- csps模拟9495凉宫春日的忧郁,漫无止境的八月,简单计算,格式化,真相题解
题面:https://www.cnblogs.com/Juve/articles/11767239.html 94,95的T3都没改出来,是我太菜了... 凉宫春日的忧郁: 比较$x^y$和$y!$的 ...
- System.Web.HttpCookie.cs
ylbtech-System.Web.HttpCookie.cs 1.程序集 System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken= ...
- CSS 属性2
CSS背景属性 background-color:背景颜色. background-image:背景图片地址.如:background-image:url(images/bg.gif) b ...
- Big Number HDU - 1212
As we know, Big Number is always troublesome. But it's really important in our ACM. And today, your ...
- Java基础:基本类型
1.基本类型 Java中有8种基本类型,分为4类,分别为: 整型:包括 byte . short. int . long 泛型:float.double 字符型:char 布尔型:boolean 2 ...
- 从零开始学习jQuery (六) jquery中的AJAX使用
本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式. 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即 ...
- 安装MySql社区版(35-3)
1,https://dev.mysql.com/ --------------------------------------------------------------------------- ...