bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+最大流
来源:互联网 发布:淘宝卖家开通直播入口 编辑:程序博客网 时间:2024/05/17 08:08
→题目链接←
二分答案,每次把边长小于mid的边放到图中,正反的边容量都为1,跑最大流
然后用最大流和T判断一下,如果大于T返回true,否则false
代码:
#include<iostream>#include<cstdio>#include<vector>#include<queue>#include<cstring> #define ll long long#define inf 10000001 using namespace std; struct node{ int to,num;}edge[80080];int fro[80080],to[80080],len[80080];int n,m,T;int pn=1;vector<int>v[220];int edgenum=0;int d[220]; void link(int x,int y,int z){ node t; t.to=y; t.num=z; edge[edgenum]=t; v[x].push_back(edgenum); edgenum++; t.to=x; t.num=z; edge[edgenum]=t; v[y].push_back(edgenum); edgenum++;} bool bfs(){ memset(d,0,sizeof(d)); d[1]=1; queue<int>q; q.push(1); while(!q.empty()){ int t=q.front(); q.pop(); if(t==pn)continue; for(int i=0; i<v[t].size(); i++){ int x=v[t][i]; int to=edge[x].to; int num=edge[x].num; if(num==0 || d[to]!=0)continue; d[to]=d[t]+1; q.push(to); } } if(d[pn]!=0)return true; return false;} ll dfs(int x,int y){ if(x==pn || y==0)return y; ll sum=0; for(int i=0; i<v[x].size(); i++){ int j=v[x][i]; int to=edge[j].to; int num=edge[j].num; if(num){ if(d[to]!=d[x]+1)continue; ll k=dfs(to,min(num,y)); y-=k; sum+=k; edge[j].num-=k; edge[j^1].num+=k; if(y==0)break; } } if(sum==0)d[x]=0; return sum;} bool check(int x){long long ans=0;edgenum=0;for(int i=1; i<=n; i++)v[i].clear();for(int i=1; i<=m; i++){if(len[i]<=x){link(fro[i],to[i],1);}}while(bfs())ans+=dfs(1,inf);return ans>=T;}int main(){ scanf("%d%d%d",&n,&m,&T); for(int i=1; i<=m; i++){ scanf("%d%d%d",&fro[i],&to[i],&len[i]); } pn=n; int l=1,r=1000000; int ans; while(l<=r){ int mid=(l+r)/2; if(check(mid))ans=mid,r=mid-1; else l=mid+1; } printf("%d\n",ans); return 0;}
阅读全文
0 0
- bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 (二分+最大流)
- bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+最大流
- [BZOJ1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机(二分+最大流)
- bzoj1733[Usaco2005 feb]Secret Milking Machine 神秘的挤奶机
- 最大流+二分Secret Milking Machine
- POJ 2455.Secret Milking Machine【最大流+二分】
- POJ 2455 Secret Milking Machine(二分答案+最大流)
- POJ2455 Secret Milking Machine 典型二分答案+最大流判定
- 【最大流+dinic+二分】北大 poj 2455 Secret Milking Machine
- poj 2455 Secret Milking Machine 最大流+二分查找
- POJ 2455.Secret Milking Machine【最大流+二分】
- poj - 2455 - Secret Milking Machine(最大流+二分)
- POJ 2455 Secret Milking Machine(二分+最大流)
- poj 2455 Secret Milking Machine 二分+最大流
- POJ 2455--Secret Milking Machine【二分枚举 && 最大流 && 经典】
- POJ 2455 Secret Milking Machine(二分+最大流)
- POJ 2455 Secret Milking Machine && 二分枚举 + 最大流
- POJ 2455 Secret Milking Machine 最大流 二分答案
- 1050. 螺旋矩阵(25)
- HDU 6121 树的节点计数
- JS-DOM(二)_操作节点
- 解决tomcat 8080端口被占用问题
- unity调用ios的参数传入与返回
- bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+最大流
- 点击查看大图(长按保存图片)
- 【NOI2016】优秀的拆分
- 解决activity、service间使用sharePreference进行值存取不同步
- HDU 6129 Just do it
- [RK3288][Android7.1.2] Launcher3 源码阅读之step2:详解Launcher的OnCreate方法的A部分
- 编写一个Windows窗口应用程序
- jquery验证表单不为空
- Seek the Name, Seek the Fame POJ