博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1070: [SCOI2007]修车
阅读量:6514 次
发布时间:2019-06-24

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

网络流——最小费用流。

好久没写了板子都快忘了。将m个工人拆成n个点,点(i,j)表示让i工人在倒数第j辆车时去修连向这个点的车,那么显而易见代价为j*ti(后面的人要等)。

1 #include
2 using namespace std; 3 #define N 70 4 #define M 15 5 #define INF 1e9 6 int n,m,cnt=2,ti[M][N],head[5005],p[5005],a[5005],ans,d[5005],S,T; 7 bool vis[5005]; 8 queue
q; 9 struct edges{10 int fr,to,cap,flow,cost,next;11 }e[100005];12 void inser(int u,int v,int c,int co){13 e[cnt]=(edges){u,v,c,0,co,head[u]};head[u]=cnt++;14 e[cnt]=(edges){v,u,0,0,-co,head[v]};head[v]=cnt++;15 }16 bool spfa(){17 memset(d,0x3f,sizeof(d));18 q.push(S); d[S]=0; a[S]=INF;19 while(!q.empty()){20 int x=q.front(); q.pop(); vis[x]=0;21 for(int i=head[x];i;i=e[i].next){22 if(d[e[i].to]>d[x]+e[i].cost && e[i].cap>e[i].flow){23 d[e[i].to]=d[x]+e[i].cost; p[e[i].to]=i; a[e[i].to]=min(a[x],e[i].cap-e[i].flow);24 if(!vis[e[i].to]) vis[e[i].to]=1,q.push(e[i].to);25 }26 }27 }28 return d[T]

 

转载于:https://www.cnblogs.com/enigma-aw/p/5960873.html

你可能感兴趣的文章
JAVA Collections框架
查看>>
进制转换
查看>>
ASCII码
查看>>
java常用四种排序源代码
查看>>
win7 下硬盘安装Redhat7
查看>>
Redis 分布式锁的正确实现方式
查看>>
mysqldump 备份命令使用中的一些经验总结
查看>>
程序猿知道英语词汇
查看>>
数据存储(两)--SAX发动机XML记忆(附Demo)
查看>>
谈谈SQL 语句的优化技术
查看>>
ecshop如何判断缓存文件是否能更新
查看>>
javascript于boolean类型转换,运营商&&和|| 返回值
查看>>
深入分析面向对象中的封装作用
查看>>
深刻理解Python中的元类(metaclass)
查看>>
Java编程的逻辑 (44) - 剖析TreeSet
查看>>
address元素
查看>>
Android View体系(六)从源码解析Activity的构成
查看>>
fnmatch源码阅读
查看>>
U9249 【模板】BSGS
查看>>
单片机小白学步系列(九) 用万用焊板搭建实验电路
查看>>