逃跑(escape)
逃跑(escape)
时间限制: 3 Sec 内存限制: 128 MB
题目描述

输入
输出
样例输入
样例输出

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<stack>
#include<algorithm>
#include<ctime>
#include<vector>
using namespace std;
int n,m,a,src,des;
struct node
{
int next,to;
long long dis,dis2;
}edge[];
int head[],size=;
int b[];//蝙蝠所在点
long long v1[];//各点到终点
long long v2[];//二小姐到各点
long long v3[];
void putin(int from,int to,long long dis,long long dis2)
{
size++;
edge[size].next=head[from];
edge[size].to=to;
edge[size].dis=dis;
edge[size].dis2=dis2;
head[from]=size;
}
void in(int from,int to,long long dis,long long dis2)
{
putin(from,to,dis,dis2);
putin(to,from,dis,dis2);
}
void bfs1()
{
memset(v1,/,sizeof(v1));
int front=,tail=,i,j;
int p[],vis[]={};
p[tail++]=des;
v1[des]=;
vis[des]=;
while(front!=tail)
{
int x=p[front++];
front%=;
vis[x]=;
for(i=head[x];i!=-;i=edge[i].next)
{
int y=edge[i].to;
if(v1[y]>v1[x]+edge[i].dis)
{
v1[y]=v1[x]+edge[i].dis;
if(!vis[y])
{
vis[y]=;
p[tail++]=y;
tail%=;
}
}
}
}
}
void bfs2()
{
memset(v2,/,sizeof(v2));
int front=,tail=,i,j;
int p[],vis[]={};
p[tail++]=src;
v2[src]=;
vis[src]=;
while(front!=tail)
{
int x=p[front++];
front%=;
vis[x]=;
for(i=head[x];i!=-;i=edge[i].next)
{
int y=edge[i].to;
if(v2[y]>v2[x]+edge[i].dis2)
{
v2[y]=v2[x]+edge[i].dis2;
if(!vis[y])
{
vis[y]=;
p[tail++]=y;
tail%=;
}
}
}
}
}
void bfs3()
{
memset(v3,,sizeof(v3));
int front=,tail=,i,j;
int p[],vis[]={};
for(i=;i<=a;i++)
{
p[tail++]=b[i];
v3[b[i]]=v1[b[i]];
vis[b[i]]=;
}
while(front!=tail)
{
int x=p[front++];
front%=;
vis[x]=;
for(i=head[x];i!=-;i=edge[i].next)
{
int y=edge[i].to;
if(v3[y]<v3[x]-edge[i].dis)
{
v3[y]=v3[x]-edge[i].dis;
if(!vis[y])
{
vis[y]=;
p[tail++]=y;
tail%=;
}
}
}
}
}
long long ans,ans1;
int main()
{
memset(head,-,sizeof(head));
int i,j;
scanf("%d%d%d%d%d",&n,&m,&a,&src,&des);
for(i=;i<=a;i++)
scanf("%d",&b[i]);
for(i=;i<=m;i++)
{
int from,to;long long dis,dis2;
scanf("%d%d%lld%lld",&from,&to,&dis,&dis2);
in(from,to,dis,dis2);
}
bfs1();bfs2();bfs3();
ans+=v2[des];
for(i=;i<=a;i++)
ans+=v1[b[i]];
ans1=ans;
for(i=;i<=n;i++)
{
ans1=min(ans1,ans-v2[des]+v2[i]+v1[i]-v3[i]);
}
cout<<ans1;
return ;
}
逃跑(escape)的更多相关文章
- 【BZOJ-1340】Escape逃跑问题 最小割
1340: [Baltic2007]Escape逃跑问题 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 264 Solved: 121[Submit] ...
- BZOJ 1340: [Baltic2007]Escape逃跑问题
1340: [Baltic2007]Escape逃跑问题 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 285 Solved: 133[Submit] ...
- HDU 3533 Escape(大逃亡)
HDU 3533 Escape(大逃亡) /K (Java/Others) Problem Description - 题目描述 The students of the HEU are maneu ...
- 【HDU - 3533】Escape(bfs)
Escape Descriptions: 一个人从(0,0)跑到(n,m),只有k点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y问这个人能不能安全到 ...
- ACM: Gym 101047E Escape from Ayutthaya - BFS
Gym 101047E Escape from Ayutthaya Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I6 ...
- 简单明了区分escape、encodeURI和encodeURIComponent
一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种 ...
- c#模拟js escape方法
public static string Escape(string s) { StringBuilder sb = new StringBuilder(); byte[] ba = System.T ...
- LYDSY热身赛 escape
Description 给出数字N(1<=N<=10000),X(1<=x<=1000),Y(1<=Y<=1000),代表有N个敌人分布一个X行Y列的矩阵上矩形的行 ...
- javascript escape()函数和unescape()函数
javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...
随机推荐
- poj1182食物链,经典带权并查集
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种 ...
- [瞎玩儿系列] 使用SQL实现Logistic回归
本来想发在知乎专栏的,但是文章死活提交不了,我也是醉了,于是乎我就干脆提交到CNBLOGS了. 前言 前段时间我们介绍了Logistic的数学原理和C语言实现,而我呢?其实还是习惯使用Matlab进行 ...
- 基于Struts2的SpringMVC入门
1.SpringMVC概述 (1)SpringMVC为表现层提供基础的基于MVC设计理念的优秀Web框架, (2)SpringMVC通过一套mvc的注解,让POJO成为处理请求的控制器,而无需任何接口 ...
- 1008 Elevator
Problem Description The highest building in our city has only one elevator. A request list is made u ...
- SVN常见问题总结一
注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/6828776.html ) 作者:wangwen896 SVN是Subversion的简称,是一个开放 ...
- mysql5.6源码自动安装脚本
将脚本与源码安装包放在同一目录下,执行脚本即可(执行脚本会使用yum安装依赖包) 安装完成之后,既可以使用mysql -uroot -p登录 脚本内容如下: [root@mysql src]# c ...
- 谈谈RDD、DataFrame、Dataset的区别和各自的优势
在spark中,RDD.DataFrame.Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势 共性: 1.RDD.DataFrame.Dataset全都是spar ...
- PipedInputStream和PipedOutputStream详解
PipedInputStream类与PipedOutputStream类用于在应用程序中创建管道通信.一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进 ...
- 《JavaScript高级程序设计》里对 call() 和 apply() 的解释 (116页)
每个函数都包含两个非继承而来的方法:apply()和call().这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值. apply(): 方法接受两个参数:一个是在其 ...
- How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On(RHEL Pacemaker中配置STONITH)
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...