逃跑(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 ...
随机推荐
- 整合最优雅SSM框架:SpringMVC + Spring + MyBatis
我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...
- Linux 按时间批量删除文件(删除N天前文件)
需要根据时间删除这个目录下的文件,/home/lifeccp/dicom/studies,清理掉20天之前的无效数据. 可以使用下面一条命令去完成: -name "*.*" -ex ...
- WPF+MVVM学习总结 DataGrid简单案例
一.WPF概要 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的 ...
- Git相关操作及记录
一.软件 1.下载Git客户端软件 Widows平台: https://github.com/git-for-windows/git/releases/download/v2.13.0.windows ...
- zabbix常见问题整理 持续更新……
[toc] 1.zabbix仪表板错误 问题: zabbix server is not running: the information displayed may not be current 解 ...
- 加盟全景-加盟VR虚拟现实-全景智慧城市
作为一个技术整合型产业,VR行业的硬件厂商几乎没有任何技术基础,很多国产虚拟现实VR创业公司基本都是和几家固定的上游零部件提供商合作,全行业都在等待高通骁龙芯片的升级,这和手机行业有几分相似.去年3月 ...
- Hadoop2.6.1中的Reducer实现
正在考虑怎么方便上传图片 1.Partitioner其是一个抽象类,只有一个抽象方法.其作用是对Reducer产生的中间结果进行分片,以方便将同一分组的数据交给同一个Reducer处理 2.类的继承结 ...
- C语言实验单片机串口发送int型数据
void SendIint(int n)reentrant { unsigned char s; while(n!=0) { s=(unsigned char)n%10+48; SendByte(s) ...
- CentOS7 防火墙规则 (firewalld)
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disab ...
- 开涛spring3(6.9) - 对JDBC的支持 之 7.1 概述
7.1 概述 7.1.1 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTes ...