[USACO4.4]追查坏牛奶Pollutant Control
题目链接:ヾ(≧∇≦*)ゝ
Solution:
第一问很好解决,根据网络流:最大流=最小割定理,我们可以轻松求出。
至于第二问,我们不妨把每一条边乘上一个大于1000的数再加上1。
这样的话,对于最小割,显然就是求出来的\(maxflow/W\)(W为乘上的数)。
而对于第二问,则是\(maxflow\,\,mod \,\,W\),因为每割去一条边,它就会加上1
Code:
#include<bits/stdc++.h>
#define N 3001
#define inf 1926081700
#define int long long
using namespace std;
int n,m,cnt=1;
int S=1,T,head[N];
struct Edge{int nxt,to,v;}edge[N];
void ins(int x,int y,int z){
edge[++cnt].nxt=head[x];
edge[cnt].to=y;edge[cnt].v=z;
head[x]=cnt;
}
namespace Network_Flow{
queue<int> q;
int delta,dep[N];
int bfs(){
delta=inf;
memset(dep,0,sizeof(dep));
q.push(S);dep[S]=1;
while(!q.empty()){
int x=q.front();q.pop();
for(int i=head[x];i;i=edge[i].nxt)
if(!dep[edge[i].to]&&edge[i].v){
dep[edge[i].to]=dep[x]+1;
delta=min(delta,edge[i].v);
q.push(edge[i].to);
}
}
return dep[T];
}
int dfs(int x,int rest){
if(x==T||rest<=0) return rest;
int flow=0;
for(int i=head[x];i;i=edge[i].nxt){
int y=edge[i].to,v=edge[i].v;
if(v&&dep[y]==dep[x]+1){
int now=dfs(y,min(rest,v));
edge[i].v-=now;
edge[i^1].v+=now;
flow+=now;rest-=now;
if(rest<=0) break;
}
}
return flow;
}
void dinic(){
int maxflow=0;
while(bfs()) maxflow+=dfs(S,inf);
int ans1=maxflow,ans2=maxflow;
printf("%lld %lld\n",ans1/N,ans2%N);
}
}
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();};
return x*f;
}
signed main(){
n=read(),m=read();T=n;
for(int x,y,z,i=1;i<=m;i++){
x=read(),y=read(),z=read();
ins(x,y,z*N+1);ins(y,x,0);
}
using namespace Network_Flow;
dinic();
return 0;
}
[USACO4.4]追查坏牛奶Pollutant Control的更多相关文章
- 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告
P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...
- 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control
题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候,有三聚氰胺的牛奶已经进入了送货网.这个送货网很大,而且关系复杂.你知道这批牛 ...
- 【题解】Luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
原题传送门 看到这种题,应该一眼就能知道考的是最小割 没错这题就是如此简单,跑两遍最大流(最小割=最大流),一次边权为题目所给,一次边权为1 还有一种优化,优化后只需跑一次最大流,把每条边的权值改成w ...
- luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
传送门 要求断掉某些边使得两个点不连通,显然是最小割 但是要求选的边数尽量少,,, 可以考虑修改边权(容量),即把边权\(c\)改成\(c*(m+1)+1\) 没了 // luogu-judger-e ...
- 洛谷 1344 [USACO4.4]追查坏牛奶Pollutant Control——最大流
题目:https://www.luogu.org/problemnew/show/P1344 那个边数的限制,只要把边权乘1001再+1即可.乘1001是因为有1000条边,这样流量小的不会因为边数多 ...
- USACO Section 4.4 追查坏牛奶Pollutant Control
http://www.luogu.org/problem/show?pid=1344 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件 ...
- [USACO Section 4.4]追查坏牛奶Pollutant Control (最小割)
题目链接 Solution 一眼看过去就是最小割,但是要求割边最少的最小的割. 所以要用骚操作... 建边的时候每条边权 \(w = w * (E+1) + 1;\) 那么这样建图跑出来的 \(max ...
- 洛谷 P1344 追查坏牛奶Pollutant Control —— 最小割
题目:https://www.luogu.org/problemnew/show/P1344 就是求最小割: 但是还要边数最小,所以把边权都*1001+1,这样原来流量部分是*1001,最大流一样的不 ...
- 【Luogu1344】追查坏牛奶(最小割)
[Luogu1344]追查坏牛奶(最小割) 题面 洛谷 题解 裸的最小割,但是要求边的数量最小. 怎么办呢?给每条边的权值额外加上一个很大的值就了. #include<iostream> ...
随机推荐
- jqgrid 配置行号及行号的宽度
有时,我们想把jqgrid的行号按指定的宽度显示出来,如何实现? 通过 rownumbers:true 设置启用行号 通过 rownumWidth 配置行号列的宽度 $("#jqGrid& ...
- navicat 连接Oracle 报错:Cannot load OCI DLL, 126
1.64位win7 安装了oracle11g 使用Navicat for Oracle cannot load OCI DLL,126 解决方法:navicat 菜单中 -工具->选项-> ...
- 搭建HBase的本地模式、伪分布式、全分布式和HA模式
一.安装HBase: 我这里选择的是hbase-1.3.1-bin.tar.gz版本解压HBase: tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training 配置 ...
- 避免写慢SQL
最近在整理数据库中的慢SQL,同时也查询了相关资料.记录一下,要学会使用执行计划来分析SQL. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且 ...
- Python基础之公共方法
公共方法:就是列表,元组,字典,字符串能共同使用的方法: Python内置函数 内置函数罗列 函数 描述 备注 len(item) 计算容器中的元素个数 del(item) 删除变量 del有两种方法 ...
- Data Consistency Primer
云应用通常来说,使用的数据很多都是分散的,来自不同的数据仓库.在这种环境下,管理和保持数据一致性是很复杂的,无论是在并发跟可用性上都可能出问题.开发者有的时候就需要为了强一致性而牺牲可用性了.这也就意 ...
- POJ2533&&1836&&3176
终于写完了POJ的DP专题,然而都是水题233 这次也把题目分了一下,先挑3道特别简单的讲一下 2533 题意:求最长上升子序列. 很简单,用一般的DP或者二分优化都可以过去 这里懒得写一般DP了,其 ...
- 转 git config命令使用
. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大家 ...
- 作业要求20160901 从edu.cnblogs.com中抄过来的,备忘
[已完成] 杨贵福 发布于 2016-09-01 21:51 开通技术博客,博客园 cnblogs 关注 杨贵福 younggift,回贴 "构建之法东北师大站,继续 2016秋" ...
- Notes of Daily Scrum Meeting(12.19)
今天工作进展的速度别昨天稍有提高,希望大家再接再厉!加油! 团队任务总结如下: 团队成员 今日团队工作 陈少杰 重新尝试使用get等方法进行网络连接的调试 王迪 调试搜索功能中测出的问题 金鑫 测试已 ...