BZOJ 1927 星际竞速(最小费用最大流)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1927
题意:一个图,n个点。对于给出的每条边 u,v,w,表示u和v中编号小的那个到编号大的那个的时间为w。另外有n个值Ai,表示从任何一个点到达i点的时间为Ai。初始时你在n个点之外的一个 点上,我们称其为初始点B。要求从B出发,遍历n个点每个点一次,求最小时间。显然开始你只能使用Ai从B到达n个点中的某个点,因为B到n个点中没有其 他的边。
思路:因为最后停在了某个点上,那么从B出 发其实一共走过了n条边,n个点中每个点都有一个1的入度,n个点中有n-1个点有一个1的出度。那么,我们将n个点拆成两个点,出度点和入读点,源点S 向每个出度点连边<1,0>(流量1,费用0),每个入度点向汇点T连边<1,0>。S向每个入度点连 边<1,Ai>,每个出度点向入度点连边<1,w>(这两个点有边的话,且只能从小的向大的连),那么样例中的数据得到的图为:
其中红色的为最后最小费用最大流中的边。因
为每个入度点到T的流为1,所以到达这个点的要么从S要么从出度点,且只有一条,保证了一共有n条边,从S出发的至少有一条,就等价于从B出发的一条,那
么若还有其他从S出发的,那么必然存在有些出度点没有到入度点的边,那么从S出发的可以看做从这个出度点经过Ai到达相应的入度点。
struct node
{
int u,v,flow,cost,next;
};
node edges[N*100];
int head[N],e;
void add(int u,int v,int flow,int cost)
{
edges[e].u=u;
edges[e].v=v;
edges[e].cost=cost;
edges[e].flow=flow;
edges[e].next=head[u];
head[u]=e++;
}
void Add(int u,int v,int flow,int cost)
{
add(u,v,flow,cost);
add(v,u,0,-cost);
}
int C[N],F[N],pre[N],s,t;
int visit[N];
int SPFA(int s,int t)
{
clr(pre,-1);
queue<int> Q;
Q.push(s);
int i;
FOR0(i,t+1) C[i]=INF,F[i]=0,visit[i]=0;
int u,v,c,f;
C[s]=0; F[s]=INF;
while(!Q.empty())
{
u=Q.front();
Q.pop();
visit[u]=0;
for(i=head[u];i!=-1;i=edges[i].next)
{
v=edges[i].v;
c=edges[i].cost;
f=edges[i].flow;
if(f>0&&C[v]>C[u]+c)
{
C[v]=C[u]+c;
F[v]=min(F[u],f);
pre[v]=i;
if(!visit[v])
{
Q.push(v);
visit[v]=1;
}
}
}
}
return F[t];
}
int MCMF(int s,int t)
{
int ans=0,i,temp,x;
while(temp=SPFA(s,t))
{
for(i=t;i!=s;i=edges[pre[i]].u)
{
x=pre[i];
ans+=temp*edges[x].cost;
edges[x].flow-=temp;
edges[x^1].flow+=temp;
}
}
return ans;
}
int n,m;
int main()
{
RD(n,m); s=0; t=n+n+1; clr(head,-1); e=0;
int i,x,y,z;
FOR1(i,n) RD(x),Add(s,n+i,1,x);
FOR1(i,m)
{
RD(x,y,z);
if(x>y) swap(x,y);
Add(x,n+y,1,z);
}
FOR1(i,n)
{
Add(s,i,1,0);
Add(n+i,t,1,0);
}
PR(MCMF(s,t));
}
BZOJ 1927 星际竞速(最小费用最大流)的更多相关文章
- bzoj 1927 星际竞速 —— 最小费用最大流
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1927 首先注意到这是个DAG: 考虑每个点从哪里来,可以是瞬移来的,也可以是从某个点走过来的 ...
- BZOJ1927: [Sdoi2010]星际竞速(最小费用最大流 最小路径覆盖)
题意 题目链接 Sol 看完题不难想到最小路径覆盖,但是带权的咋做啊?qwqqq 首先冷静思考一下:最小路径覆盖 = \(n - \text{二分图最大匹配数}\) 为什么呢?首先最坏情况下是用\(n ...
- BZOJ 1927: [Sdoi2010]星际竞速(最小费用最大流)
拆点,费用流... ----------------------------------------------------------------------------- #include< ...
- BZOJ-1927 星际竞速 最小费用最大流+拆点+不坑建图
1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec Memory Limit: 259 MB Submit: 1593 Solved: 967 [Submit][Statu ...
- BZOJ 2424: [HAOI2010]订货(最小费用最大流)
最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...
- BZOJ 1927 星际竞速(费用流)
考虑费用流,题目要求走n个点都走完且恰好一次,显然流量的限制为n. 建立源点s和汇点t,并把每个星球拆成两个点i和i',分别表示已到达该点和经过该点. 对于能力爆发,建边(s,i',1,w). 对应高 ...
- BZOJ 1070: [SCOI2007]修车 [最小费用最大流]
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4936 Solved: 2032[Submit][Status] ...
- BZOJ 1927 星际竞速
http://www.lydsy.com/JudgeOnline/problem.php?id=1927 思路:把一个点拆成两个点, S->i 费用0,流量1 (代表这个点可以移动到其他点所必备 ...
- bzoj 1061 志愿者招募(最小费用最大流)
[Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3792 Solved: 2314[Submit][Status][Di ...
随机推荐
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- 夺命雷公狗—angularjs—12—get参数的接收
我们在实际的开发中get和post的交互都是离不开的,我们先来研究下get参数是如何接收到的.. 而且在实际开发中利用json来进行传递参数也是比较多的,这里我们就以get来接收参数为列.. 先创建一 ...
- 夺命雷公狗-----tp中遇到数据乘积的问题的遇见
昨晚遇到了一个很神奇的问题, 然后打印出来的结果是 ) LIMIT , 然后dump出来的结果有点无语,他是10*10这样的倍增的,如果数据量大,分分钟直接可以让服务器直接死掉.... 想这问题我想了 ...
- 关于VS 中 HttpHandler 的设置 500.23
前一段时间在讲 HttpHandler 的过程中遇到一些问题,在此分享一下. 使用VS2012 添加HttpHandler后,在web.config配置的节点如下: <?xml version= ...
- less文件的样式无法生效的一个原因,通过WEB浏览器访问服务器less文件地址返回404错误
有一种情况容易导致less文件的样式无法生效,就是部分服务器(以IIS居多)会对未知后缀的文件返回404,导致无法正常读取.less文件.解决方案是在服务器中为.less文件配置MIME值为text/ ...
- 怎样查出SQLServer的性能瓶颈
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...
- jquery中的each用法以及js中的each方法实现实例
each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$ ...
- JNI开发流程-JNI/NDK【转】
本文转载自:http://wiki.jikexueyuan.com/project/jni-ndk-developer-guide/workflow.html 开发流程 JNI 全称是 Java Na ...
- seo伪原创技术原理分析,php实现伪原创示例
seo伪原创技术原理分析,php实现伪原创示例 现在seo伪原创一般采用分词引擎以及动态同义词库,模拟百度(baidu),谷歌(google)等中文切词进行伪原创,生成后的伪原创文章更准确更贴近百度和 ...
- kvm虚拟机virt-manager启动报错
安装kvm,用virt-manager启动时报错如下: Traceback (most recent call last): File "/usr/share/virt-manager/v ...