题:https://nanti.jisuanke.com/t/41349

分析:对于hero来说,走单源最短路,然后遍历dis数组中的最大值即可找到,对于消防员来说,走多源最短路,只需要建个超级起点连接各个消防点,边权为0走spfa即可出dis数组

注意:得无向边

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const ll INF=1e18;
const int M=2e3+;
ll dist[M]; struct node{
int v,nextt;
ll w;
}e[(M*M)<<]; int tot,vis[M],head[M],a[M],sign[M];
void addedge(int u,int v,ll w){
e[tot].v=v;
e[tot].nextt=head[u];
e[tot].w=w;
head[u]=tot++;
} void spfa(int s)
{
queue<int>q;
while(!q.empty())
q.pop();
memset(dist,0x7f,sizeof dist);
//cout<<dist[0]<<endl;
memset(vis,false,sizeof vis);
dist[s]=;
vis[s]=true;
q.push(s);
while(!q.empty()) {
int u=q.front();
q.pop();
vis[u]=false;
for(int i=head[u];~i; i=e[i].nextt) {
int v=e[i].v;
if(dist[v]>dist[u]+e[i].w) {
dist[v]=dist[u]+e[i].w;
if(!vis[v]) {
vis[v]=true;
q.push(v);
}
}
}
}
} int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m,he,k,C,s=;
scanf("%d%d%d%d%d",&n,&m,&he,&k,&C); for(int i=;i<=n;i++)
head[i]=-,sign[i]=;
tot=; for(int i=;i<=k;i++)
scanf("%d",&a[i]),sign[a[i]]=; while(m--) {
int u,v;
ll w;
scanf("%d%d%lld",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
} spfa(he); ll maxxhe=0ll; for(int i=;i<=n;i++)
maxxhe=max(maxxhe,dist[i]); for(int i=;i<=k;i++)
addedge(s,a[i],);
spfa(s); ll maxxren=0ll;
for(int i=;i<=n;i++){
if(sign[i]==)
maxxren=max(dist[i],maxxren);
} maxxren*=1ll*C;
// cout<<maxxhe<<"!!"<<maxxren<<endl;
if(maxxhe<=maxxren){
printf("%lld\n",maxxhe);
}
else
printf("%lld\n",maxxren/C); }
return ;
}

最新文章

  1. javascript对象的一点理解
  2. ARM Linux 3.x的设备树(Device Tree)
  3. Android手机 Fildder真机抓包
  4. Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心
  5. display:inline-block的空白bug问题
  6. 网站常见问题及解决方法(div/css)
  7. Android中滑动关闭Activity
  8. IIS中如何建立FTP服务
  9. HTML5.1就要来了
  10. hdu Just a Hook
  11. java的特点跨平台原理以及JDK的安装
  12. java封装的方法
  13. BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
  14. oracle 表 库实例 空间
  15. struts2_HelloWorld
  16. centos6.5磁盘扩容
  17. Where is NuGet in VS2017 Community?
  18. hdu 1704 Rank (floyd闭包)
  19. 【转】Deep Learning(深度学习)学习笔记整理系列之(五)
  20. LINQ中的&quot;延迟查询&quot;特性【转】

热门文章

  1. 设计模式讲解4:Bridge模式源码
  2. python刷LeetCode:2.两数相加
  3. ubuntu16.04 + Kdevelop + ROS开发和创建catkin_ws工作空间
  4. 运营商何时会取消40G或100G流量封顶呢?短期内有望实现吗?
  5. HDU 2544 最短路 【Dijkstra模板题】
  6. Python与mongo交互
  7. 吴裕雄--天生自然 PHP开发学习:表单 - 验证邮件和URL
  8. 在MyEclipse的Maven环境下,使用mybatis-generator插件自动生成映射文件(接口)及实体类
  9. JavaSE--Java 的基本程序设计结构
  10. [Scoi2016]背单词(trie+贪心)