博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3469 Dual Core CPU 最大流建图思想 dinic 弧优化很重要
阅读量:4114 次
发布时间:2019-05-25

本文共 1702 字,大约阅读时间需要 5 分钟。

题意:给你n个物品,放在集合a中会有一定的花费,放在集合B中也有一定的花费,其中还有m对物体
当这m对物体放在同一个集合中不会产生额外的花费,否则会产生额外的花费,问最后最小的花费
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define MM(a) memset(a,0,sizeof(a)) typedef long long ll; typedef unsigned long long ULL; const int mod = 1000000007; const double eps = 1e-10; const int inf = 0x3f3f3f3f; const int big=50000; int max(int a,int b) { return a>b?a:b;}; int min(int a,int b) { return a
G[240005]; int level[20005],iter[20005]; void add_edge(int u,int v,int cost) { G[u].push_back(edge{ v,cost,G[v].size()}); G[v].push_back(edge{ u,0,G[u].size()-1}); } void bfs(int s) { queue
q; q.push(s); level[s]=1; while(q.size()) { int now=q.front();q.pop(); for(int i=0;i
0) { edge e=G[now][i]; if(level[e.to]<0) { level[e.to]=level[now]+1; q.push(e.to); } } } } int dfs(int s,int t,int minn) { if(s==t) return minn; for(int &i=iter[s];i
level[s]&&e.cap>0) { int k=dfs(e.to,t,min(minn,e.cap)); if(k>0) { e.cap-=k; G[e.to][e.rev].cap+=k; return k; } } } return 0; } int max_flow(int s,int t) { int ans=0,temp; for(;;) { memset(level,-1,sizeof(level)); bfs(s); if(level[t]<0) return ans; memset(iter,0,sizeof(iter)); while((temp=dfs(s,t,inf))>0) ans+=temp; } } int main() { int n,m,s,t; while(~scanf("%d %d",&n,&m)) { for(int i=1;i<=n;i++) { scanf("%d %d",&s,&t); add_edge(0,i,t); add_edge(i,n+1,s); } for(int j=1;j<=m;j++) { int x,y,c; scanf("%d %d %d",&x,&y,&c); add_edge(x,y,c); add_edge(y,x,c); } printf("%d\n",max_flow(0,n+1)); } return 0; }
分析:挑战236页   构造两个额外的点s和t,表示分别属于a,b集合,建图之后求最小割也就是最大流就好
不弧优化的话将会超时

转载地址:http://ktgsi.baihongyu.com/

你可能感兴趣的文章
Golang面试考题记录 ━━ 整数反转 解答及扩展的三个知识点
查看>>
Golang面试考题记录 ━━ 字符串中的第一个唯一字符 ,拓展:ASCII和strings字符串查找的用法
查看>>
Golang面试考题记录 ━━ 有效的字母异位词,久违的双100%,拓展reflect.DeepEqual()用法和[26]int{}的值
查看>>
Golang面试考题记录 ━━ 验证回文串,多种方法涉及双指针、strings、unicode和regexp
查看>>
Golang面试考题记录 ━━ 字符串转换整数 (atoi),知识点ascii、rune、uint8、string、char等转换
查看>>
Golang面试考题记录 ━━ 实现 strStr() 函数,截然不同三种方案,效率都差不多,双100%
查看>>
Golang面试考题记录 ━━ 外观数列 , 了解递归、bytes.Buffer和闭包
查看>>
学习日志 ━━ 理解递归(使用go语法举例)
查看>>
Golang面试考题记录 ━━ 最长公共前缀,字符串就是切片,复习[]byte、[]rune、[]uint8、[]int32和单引号
查看>>
Golang学习日志 ━━ 单向链表
查看>>
Golang面试考题记录 ━━ 删除链表中的节点,首先明白什么是链表,其次语文要好能看懂题
查看>>
Golang面试考题记录 ━━ 删除链表的倒数第N个节点, 学习闭包递归、双指针、哨兵节点
查看>>
服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
查看>>
Golang学习日志 ━━ VSCode安装Go插件(代理的使用)及初用mod
查看>>
windows使用小技巧 ━━ Windows 10 HEVC扩展要收费怎么办?教你怎么免费下载HEVC扩展
查看>>
Golang学习日志 ━━ 使用bufio方法拷贝文件将导致mov视频文件出错
查看>>
Golang学习日志 ━━ Mysql相关
查看>>
Golang学习日志 ━━ goQuery 的使用
查看>>
Golang学习日志 ━━ Go 常用包整理及介绍
查看>>
Golang学习日志 ━━ 借百度AI实现语音合成实例
查看>>