nyoj 310二分+dinic
#include<stdio.h>
#include<queue>
#include<string.h>
using namespace std;
#define inf 0x7fffffff
#define N 300
int p,t,n;
int Min(int a,int b) {
return a>b?b:a;
}
struct node {
int u,v,w,f;
}mp[40001];
int flow[N][N],d[N];
int bfs() {
int cur,i;
queue<int>q;
memset(d,0,sizeof(d));
d[1]=1;
q.push(1);
while(!q.empty()) {
cur=q.front();
q.pop();
for(i=1;i<=n;i++)
if(flow[cur][i]&&!d[i]) {
d[i]=d[cur]+1;
if(i==n)
return 1;
q.push(i);
}
}
return 0;
}
int dfs(int u,int limit) {
if(u==n)
return limit;
int cost=0,i,k;
for(i=1;i<=n;i++)
if(d[i]==d[u]+1&&flow[u][i]) {
k=dfs(i,Min(limit-cost,flow[u][i]));
if(k>0) {
flow[u][i]-=k;
flow[i][u]+=k;
cost+=k;
if(cost==limit)
break;
}
else
d[i]=-1;
}
return cost;
}
int dinic (int mid) {
int ans=0,i;
memset(flow,0,sizeof(flow));
for(i=1;i<=p;i++)
if(mp[i].w<=mid) {
flow[mp[i].u][mp[i].v]++;
flow[mp[i].v][mp[i].u]++;
}
while(bfs())
ans+=dfs(1,inf);
if(ans>=t)
return 1;
return 0;
}
int main() {
int i,min,max,mid;
while(scanf("%d%d%d",&n,&p,&t)!=EOF) {
min=inf;
max=-1;
for(i=1;i<=p;i++) {
scanf("%d%d%d",&mp[i].u,&mp[i].v,&mp[i].w);
if(mp[i].w>max)
max=mp[i].w;
if(mp[i].w<min)
min=mp[i].w;
}
while(min<=max) {
mid=(min+max)/2;
if(dinic(mid))
max=mid-1;
else
min=mid+1;
}
printf("%d\n",min);
}
return 0;
}
nyoj 310二分+dinic的更多相关文章
- poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分, dinic, isap
poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分 dinic /* * Author: yew1eb * Created Time: 2014年10月31日 星期五 ...
- POJ2391 Floyd+离散化+二分+DINIC
题意: 有n个猪圈,每个猪圈里面都有一定数量的猪(可能大于当前猪圈的数量),每个猪圈都有自己的容量,猪圈与猪圈之间给出了距离,然后突然下雨了,问多久之后所有的猪都能进圈. 思路: ...
- Optimal Milking(POJ2112+二分+Dinic)
题目链接:http://poj.org/problem?id=2112 题目: 题意:有k台挤奶机,c头奶牛,每台挤奶机每天最多生产m的奶,给你每个物品到其他物品的距离(除了物品到自己本省的距离为0外 ...
- POJ 3189 二分+Dinic
题意: 思路: 二分跨度 枚举最低座次 建图:源点向每头牛连边权为1的边 每头牛向当前枚举的B的区间这段连上边权为1的边 所有座次向汇点连边权为牛棚容量的边 判判流量是不是等于n 一开始写得是直接枚举 ...
- nyoj-310-河南省第四届省赛题目-二分+dinic
SECRET 时间限制:3000 ms | 内存限制:65535 KB 难度:6 描述 Dr.Kong is constructing a new machine and wishes to ...
- nyoj 306 二分+dfs
#include<stdio.h> #include<string.h> #define N 200 int Min(int a,int b) { return a>b? ...
- JSOI2018R2题解
D1T1:潜入行动 裸的树上DP.f[i][j][0/1][0/1]表示以i为根的子树放j个设备,根有没有放,根有没有被子树监听,的方案数.转移显然. #include<cstdio> # ...
- 2019 wannafly winter camp day5-8代码库
目录 day5 5H div2 Nested Tree (树形dp) 5F div2 Kropki (状压dp) 5J div1 Special Judge (计算几何) 5I div1 Sortin ...
- poj 2112 floyd+Dinic最大流+二分最小值
题目大意是: K台挤奶机器,C头牛,K不超过30,C不超过200,每台挤奶机器最多可以为M台牛工作,给出这些牛和机器之间,牛和牛之间,机器与机器之间的距离,在保证让最多的牛都有机器挤奶的情况下,给出其 ...
随机推荐
- Android开发中常用的一些小技巧(转载)
http://www.jb51.net/article/61135.htm Activity.startActivities() 常用于在应用程序中间启动其他的Activity. TextUtils. ...
- codevs3002石子归并3(四边形不等式优化dp)
3002 石子归并 3 参考 http://it.dgzx.net/drkt/oszt/zltk/yxlw/dongtai3.htm 时间限制: 1 s 空间限制: 256000 KB 题目等级 ...
- 八皇后问题---详解---参考<<紫书>>
在一个8*8的棋盘上 放置八个皇后 , 使得他们互相不攻击(皇后攻击范围为 同行同列同对角线) , 方法一 : 从64个格子中 选一个子集 , 使得 " 子集 中恰好有八个元素 , 且任意 ...
- 【BZOJ3328】PYXFIB(数学)
什么都不会的数学蒻菜瑟瑟发抖--Orz橙子(和兔子) 题目: BZOJ3328 分析: 橙子给我安利的数学题--(然后我就看着他因为矩阵乘法多模了一次卡了一天常数qwq表示同情) 先考虑一个子问题:求 ...
- Spark RDD/Core 编程 API入门系列之简单移动互联网数据(五)
通过对移动互联网数据的分析,了解移动终端在互联网上的行为以及各个应用在互联网上的发展情况等信息. 具体包括对不同的应用使用情况的统计.移动互联网上的日常活跃用户(DAU)和月活跃用户(MAU)的统计, ...
- 常用animation动画
/*编辑动画名*/ animation-name: myDemo; /*动画持续时间*/ animation-duration: 6s; /*动画方向*/ /*reverse 反向*/ /*alter ...
- JavaScript 封装插件学习笔记(一)
此篇只是笔记,在借鉴.参考.模仿的过程,可能不完整,请多指教! 定义插件名称要注意命名冲突,防止全局污染. 1.第一种Javascript对象命名:(Javascript语言是“先解析,后运行”,解析 ...
- Android popupwindow和dialog监听返回键
使用情况: 在activity中,出现了popupwindow和dialog,这个时候,如果点击返回键,它们消失了,但是一些操作还在继续.如:1.进行耗时操作,出现dialog提醒用户等待,这时,按下 ...
- Linux 信息查询
CPU信息查看 #查看CPU型号: $>grep 'model name' /proc/cpuinfo |uniq model name : Intel(R) Xeon(R) CPU ...
- jsp%不能解析
做一个传值问题时 遇到错误 百度了一下是百分号不能解析,实在搞不明白为什么,以前这样做好好的,这次就不行了,不知道为什么,后来偶然一次把标签删了 错误居然没了,难道struts2的这个标签不支持这样传 ...