poj 2455 二分+最大流
这个因为点少用邻接矩阵做的。
题意:求由1到n的t条不重复路径中最大边权值的最小值。
思路:先对边权进行排序,然后二分边权值,建图求从1到n的最大流,当最大流为t时便求出答案。
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 210
int n,m,t;
int a,b,c;
int map[210][210];
struct Edge
{
int u,v,w;
}edge[40001];
bool cmp(Edge a,Edge b)
{
return a.w<b.w;
}
int sap()
{
int pre[N],dis[N],gap[N],aug=-1,maxflow=0,u;
int s=1,t=n;
memset(gap,0,sizeof(gap));
memset(dis,0,sizeof(dis));
u=pre[s]=s;
gap[0]=t;
while(dis[s]<t)
{
loop:for(int i=1;i<=t;i++)
{
if(map[u][i]&&dis[u]==dis[i]+1)
{
if(aug==-1||aug>map[u][i])
aug=map[u][i];
pre[i]=u;
u=i;
if(u==t)
{
maxflow+=aug;
for(int v=t;v!=s;v=pre[v])
{
map[pre[v]][v]-=aug;
map[v][pre[v]]+=aug;
}
aug=-1;
u=s;
}
goto loop;
}
}
int mindis=t-1;
for(int i=1;i<=t;i++)
if(map[u][i]&&dis[i]<mindis)
mindis=dis[i];
if((--gap[dis[u]])==0) break;
gap[dis[u]=mindis+1]++;
u=pre[u];
}
return maxflow;
}
void build(int x)
{
memset(map,0,sizeof(map));
for(int i=0;i<=x;i++)
{
int u,v;
u=edge[i].u;
v=edge[i].v;
map[u][v]++;
map[v][u]++;
}
}
bool check(int x)
{
build(x);
int maxflow=sap();
if(maxflow>=t)
{
return true;
}
return false;
} int main()
{
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
memset(edge,0,sizeof(edge));
memset(map,0,sizeof(map));
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
edge[i].u=a;
edge[i].v=b;
edge[i].w=c;
}
sort(edge,edge+m,cmp);
int l=0,r=m-1;
while(r>=l)
{
int mid=(l+r)>>1;
if(check(mid))
{
r=mid-1;
}
else l=mid+1;
}
printf("%d\n",edge[r+1].w);
}
}
poj 2455 二分+最大流的更多相关文章
- poj 3228(二分+最大流)
题目链接:http://poj.org/problem?id=3228 思路:增设一个超级源点和一个超级汇点,源点与每一个gold相连,容量为gold数量,汇点与仓库相连,容量为仓库的容量,然后就是二 ...
- POJ 2112 二分+最大流
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 17297 Accepted: 6203 ...
- POJ 2391 二分+最大流
Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19066 Accepted: 4 ...
- POJ 3228 二分最大流
题意: 给你N个位置,每个位置都有金矿数量和仓库数量,然后位置和位置之间的距离给了出来,最后问你吧所有的金矿都放到库里面走的路径 最长的最短 是多少? 思路: 比较简单的一个题, ...
- POJ 2455 二分+网络流
题意: 思路: 莫名其妙TLE 啊woc我A了一坨题的网络流模板有问题 !!!! 在常数上会慢 (一个等于号 啊啊啊) 改了所有网络流有关的文章- .... //By SiriusRen #inclu ...
- POJ 2455 Secret Milking Machine (二分 + 最大流)
题目大意: 给出一张无向图,找出T条从1..N的路径,互不重复,求走过的所有边中的最大值最小是多少. 算法讨论: 首先最大值最小就提醒我们用二分,每次二分一个最大值,然后重新构图,把那些边权符合要求的 ...
- poj 2391 Ombrophobic Bovines 最短路 二分 最大流 拆点
题目链接 题意 有\(n\)个牛棚,每个牛棚初始有\(a_i\)头牛,最后能容纳\(b_i\)头牛.有\(m\)条道路,边权为走这段路所需花费的时间.问最少需要多少时间能让所有的牛都有牛棚可待? 思路 ...
- uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。
/** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任 ...
- POJ - 2018 二分+单调子段和
依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...
随机推荐
- hdu 6059---Kanade's trio(字典树)
题目链接 Problem Description Give you an array A[1..n],you need to calculate how many tuples (i,j,k) sat ...
- 切糕[HNOI2013]
经过千辛万苦小A 得到了一块切糕,切糕的形状是长方体,小A 打算拦腰将切糕切成两半分给小B.出于美观考虑,小A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案. 出于简便考虑, ...
- HPU--1091 N!的位数
1091: N!的位数 [数学] 时间限制: 1 Sec 内存限制: 128 MB提交: 97 解决: 12 统计 题目描述 我们知道n!=n*(n-1)*(n-2)*-*2*1. 那么给定一个n,n ...
- [技术] OIer的C++标准库 : 字符串库<string>
引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 众所周知, OI中经常用到字符串相关的处理, 这时善用字符串库可以使一些操作更加简洁易 ...
- 14. Longest Common Prefix【leetcode】
14. Longest Common Prefix Write a function to find the longest common prefix string amongst an array ...
- 【NO.5】jmeter-结果文件
Jmeter的结果文件可以保存很多内容,你需要看哪个就勾选哪个,很简单是吧. 结果文件可以保存为2种形式:XML或者CSV.我印象里在书上提到过,如果保存为XML形式的结果文件,后续可以转化为表格便于 ...
- Heritrix工具实现网络爬虫
上次用的java相关知识实现了一个简单的网络爬虫,现在存在许多开源免费的爬虫工具,相对来说,可以很简单的获取网页数据,并写入到本地. 下面我就阐述一下我用Heritrix爬虫工具实现网页数据爬取. - ...
- python 基础-----数字,字符串,列表,字典类型简单介绍
一.第一个python小程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你输 ...
- 如何输入EOF
很多线上笔试的编程题要求能循环处理多个case,需使用while(scanf("%s",tmp)!=EOF)语句.EOF表示文件结束符,但是在本机的编译环境中,如何在控制台输入EO ...
- HTML,CSS,JS之间的关系
HTML,CSS,JS之间的关系 本笔记是自己在浏览了各位前辈后拼凑总结下来的知识,供自己使用消化.后面会附上各种链接地址,尊重原创 最准确的网页设计思路是把网页分成三个层次,即:结构层(HTML). ...