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

思路:dijkstra最短路径

先以 fire-fighting hero为起点 跑一遍dijkstra

建立 起点 p 并与各 fire-fighting point 建立 权为0的边

跑完dijkstra  dis[i]为 p到point i的最短路径 即各 fire-fighting point 到 point i 的最短路径中的最小值

最后将两遍dijkstra 的dis[ ]中的最大值进行比较即可

#include<bits/stdc++.h>
using namespace std;

typedef pair<int,int> pii;
const int INF=0x3f3f3f3f;

int v,e,s,k,c;
int cnt;
];
];
];
];
];
];
];
int o;
priority_queue<pii,vector<pii>,greater<pii> >q; 

void init1()
{
    cnt=;
    ;i<=k+k+e+e;i++) to[i]=val[i]=;
    ;i<=v;i++) head[i]=;
}
void init2()
{
    ;i<=v;i++) vis[i]=,dis[i]=INF;
    dis[o]=;
    while(!q.empty()) q.pop();
}
void addEdge(int a,int b,int d)
{
    cnt++;
    to[cnt]=b;
    val[cnt]=d;
    nxt[cnt]=head[a];
    head[a]=cnt;
}
void dijkstra()
{
    q.push(pii(,o));
    while(!q.empty())
    {

        int u=q.top().second;
        q.pop();
        if(vis[u]) continue;
        vis[u]=;
        for(int e=head[u];e;e=nxt[e])
            if(dis[u]<INF&&dis[to[e]]>dis[u]+val[e])
            {
                dis[to[e]]=dis[u]+val[e];
                q.push(pii(dis[to[e]],to[e]));
            }
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    int a,b,d;
    int resXfy;
    int resHero;
    while(T--)
    {
        scanf("%d%d%d%d%d",&v,&e,&s,&k,&c);
        init1();
        resXfy=-;
        resHero=-;
        ;i<k;i++) scanf("%d",&xfy[i]);
        while(e--)
        {
            scanf("%d%d%d",&a,&b,&d);
            addEdge(a,b,d);
            addEdge(b,a,d);
        }
        o=s;
        init2();
        dijkstra();
        ;i<=v;i++) resHero=max(resHero,dis[i]);
        ;i<k;i++) addEdge(,xfy[i],),addEdge(xfy[i],,);
        o=;
        init2();
        dijkstra();
        ;i<=v;i++) resXfy=max(resXfy,dis[i]);
        if(resHero<=resXfy*c) printf("%d\n",resHero);
        else printf("%d\n",resXfy);
    }
    ;
}

The Preliminary Contest for ICPC Asia Nanchang 2019 B. Fire-Fighting Hero的更多相关文章

  1. The Preliminary Contest for ICPC Asia Nanchang 2019 E. Magic Master

    题目:https://nanti.jisuanke.com/t/41352 思路:约瑟夫环 由题意得第k张牌即求 k 为 第几个 报数为m+1 的单位 用队列模拟即可 #include<bits ...

  2. The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力)

    The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力) 传送门:https://nanti.jisuanke.com/ ...

  3. The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解

    (施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出 ...

  4. 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)

    query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...

  5. The Preliminary Contest for ICPC Asia Xuzhou 2019 E XKC's basketball team [单调栈上二分]

    也许更好的阅读体验 \(\mathcal{Description}\) 给n个数,与一个数m,求\(a_i\)右边最后一个至少比\(a_i\)大\(m\)的数与这个数之间有多少个数 \(2\leq n ...

  6. [The Preliminary Contest for ICPC Asia Nanjing 2019] A-The beautiful values of the palace(二维偏序+思维)

    >传送门< 前言 这题比赛的时候觉得能做,硬是怼了一个半小时,最后还是放弃了.开始想到用二维前缀和,结果$n\leq 10^{6}$时间和空间上都爆了,没有办法.赛后看题解用树状数组,一看 ...

  7. 计蒜客 The Preliminary Contest for ICPC Asia Nanjing 2019

    F    Greedy Sequence You're given a permutation aa of length nn (1 \le n \le 10^51≤n≤105). For each  ...

  8. The Preliminary Contest for ICPC Asia Xuzhou 2019

    A:Who is better? 题目链接:https://nanti.jisuanke.com/t/41383 题意: 类似于有N个石子,先手第一次不能拿完,每次后手只能拿 1 到 前一次拿的数量* ...

  9. The Preliminary Contest for ICPC Asia Nanjing 2019

    传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...

随机推荐

  1. 并发编程之原子Atomic&Unsafe

    1.原子更新基本类型类   用于通过原子的方式更新基本类型,Atomic包提供了以下三个类: AtomicBoolean:原子更新布尔类型. AtomicInteger:原子更新整型. AtomicL ...

  2. C#编程 线程,任务和同步(2) 开启线程

    创建线程的几种方法: 1 异步委托 创建线程的一种简单方式是定义一个委托,并异步调用它. 委托是方法的类型安全的引用.Delegate类 还支持异步地调用方法.在后台,Delegate类会创建一个执行 ...

  3. 【JulyEdu-Python基础】第 2 课:关键字和循环控制

    大纲 变量和类型常见字符串处理条件判断循环控制函数 变量和类型 基本变量类型 对于python所有对象都是继承自object的类 容器: 整数 print(type(1234)) <class ...

  4. 编译安装php7.3

    ./configure --prefix=/usr/local/php7.3.9 --with-gd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo ...

  5. gzip 命令

    NAME gzip -- compression/decompression tool using Lempel-Ziv coding (LZ77) SYNOPSIS gzip [-cdfhkLlNn ...

  6. python_0基础开始_day04

    第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...

  7. python并发编程-多线程实现服务端并发-GIL全局解释器锁-验证python多线程是否有用-死锁-递归锁-信号量-Event事件-线程结合队列-03

    目录 结合多线程实现服务端并发(不用socketserver模块) 服务端代码 客户端代码 CIL全局解释器锁****** 可能被问到的两个判断 与普通互斥锁的区别 验证python的多线程是否有用需 ...

  8. linux常见的安装软件包命令

    常用的 RPM 软件包命令 安装软件的命令格式 rpm -ivh filename.rpm 升级软件的命令格式 rpm -Uvh filename.rpm 卸载软件的命令格式 rpm -e filen ...

  9. Hive 教程(五)-参数配置

    配置基本操作 hive> set; 查看所有配置hive> set key: 查看某个配置hive> set key value: 设置某个配置 我们可以看到一些 hadoop 的配 ...

  10. Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端

    前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试也不想在模拟器中调试,我想要在真机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的 ...