假期计划

jzoj 3936

题目大意

给你一个有向图(n,m⩽20000n,m\leqslant 20000n,m⩽20000),现在有一些作为枢纽的点,且保证每一条边的两个点至少有一个是枢纽点,现在给q个询问,问某一个点到另一个点的最短路,你只需输出可以到达的数量,和可以到达的最短路之和

输入样例

3 3 1 2
1 2 10
2 3 10
2 1 5
2
1 3
3 1

输出样例

1
20

数据范围

对于 30%的数据,N⩽100,M⩽2,000。N\leqslant 100,M\leqslant 2,000。N⩽100,M⩽2,000。
对于 100%的数据,1⩽N,M⩽20,000,1⩽K⩽200,1⩽Q⩽50,000,1⩽di⩽10,000。1\leqslant N,M\leqslant 20,000,1\leqslant K\leqslant 200,1\leqslant Q\leqslant 50,000, 1\leqslant d_i\leqslant 10,000。1⩽N,M⩽20,000,1⩽K⩽200,1⩽Q⩽50,000,1⩽di​⩽10,000。

样例说明

对于第一个航班,唯一可行的路线是1−>2−>31->2->31−>2−>3,花费 20。

解题思路

因为枢纽点很少,我们对于每一个枢纽点跑一边spfaspfaspfa
如果询问的出发点是枢纽点,那就是直接最短路的值
如果不是,那和他相连的就都是,然后计算这条边加和他相连的点到终点的最短路就是结果

代码

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll n, m, k, q, x, y, z, tot, num, sum, ans, p[20010], v[20010], head[20010], b[210][20010];
struct rec
{ll to, l, next;
}a[20010];
void spfa(ll x)
{memset(b[v[x]], 127/3, sizeof(b[v[x]]));b[v[x]][x] = 0;//以第x个枢纽为起点到各个点的最短路p[x] = 1;queue<ll>d;d.push(x);while(!d.empty()){ll h = d.front();d.pop();for (ll i = head[h]; i; i = a[i].next)if (b[v[x]][h] + a[i].l < b[v[x]][a[i].to]){b[v[x]][a[i].to] = b[v[x]][h] + a[i].l;if (!p[a[i].to]){p[a[i].to] = 1;d.push(a[i].to);}}p[h] = 0;}
}
int main()
{scanf("%lld%lld%lld%lld", &n, &m, &k, &q);for (ll i = 1; i <= m; ++i){scanf("%lld%lld%lld", &x, &y, &z);a[++tot].to = y;a[tot].l = z;a[tot].next = head[x];head[x] = tot;}for (ll i = 1; i <= k; ++i){scanf("%lld", &x);v[x] = i;//记录下他是第几个,方便减小内存spfa(x);}for (ll i = 1; i <= q; ++i){scanf("%lld%lld", &x, &y);sum = 200000010;if (v[x]) sum = min(sum, b[v[x]][y]);//他就是枢纽for (ll j = head[x]; j; j = a[j].next)if (v[a[j].to])sum = min(sum, a[j].l + b[v[a[j].to]][y]);//相连的枢纽if (sum <= 200000000){num++;ans += sum;}}printf("%lld\n%lld", num ,ans);return 0;
}

【spfa】假期计划(jzoj 3936)相关推荐

  1. [CSP-S 2022] 假期计划题解

    假期计划 题目来源: CSP-S 2022 T1 题目描述 小熊计划从家出发去 4 4 4 个不同的景点游玩,完成 5 5 5 段行程后回家:家 → 景点 A A A → 景点 B B B → 景点 ...

  2. [CSP-S 2022] 假期计划

    题目传送门 [CSP-S 2022] 假期计划(民间数据) 题目描述 小熊的地图上有 n n n 个点,其中编号为 1 1 1 的是它的家.编号为 2 , 3 , - , n 2, 3, \ldots ...

  3. 关于 [CSP-S 2022] 假期计划 的一些想法

    关于 [CSP-S 2022] 假期计划 的一些想法 洛谷链接 考场算法 这题暴力其实很好想,但是我觉得暴力太低级了,所以就直接跳过了第一步.然而我的分数其实比暴力的还少一点(悲). 首先,为了判断能 ...

  4. 【题解】P8817 [CSP-S 2022] 假期计划(bfs,dfs)

    [题解]P8817 [CSP-S 2022] 假期计划 此题作为 CSP-S 的 T1,可以说是相当有难度了.感觉 T1 和 T2 换了个位置.(雾) 我作为场外 VP 选手赛时此题只得了 95pts ...

  5. 计算机假期计划内容,2019寒假计划,超详细学习计划表

    [导语]愉快的寒假已经开始了,基于拓宽知识面的目的,按时学习生活,做事有规律,度过一个快乐充实有意义的寒假,因此制定一个合理的寒假学习计划对初中孩子们是非常有必要的.下面为您制定具体计划如下.以下内容 ...

  6. 计算机假期计划内容,寒假计划表内容

    寒假计划表内容 在经过紧张的期末考试之后,同学们即将迎来寒假生活,在迎接假期的同时同学们有没有制定好假期的计划呢? 寒假计划表内容 例1 对于初三的学生来说,利用寒假做好复习是非常重要的. 1.理规划 ...

  7. hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)

    Description 小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题.为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影.(若干代指大于0)  每 ...

  8. 假期计划(holiday)【CSPS2022】

    题目描述 小熊的地图上有n 个点,其中编号为1 的是它的家.编号为2, 3, . . . , n 的都是景点.部分点对之间有双向直达的公交线路.如果点x 与z1.z1 与z2.--.zk−1 与zk. ...

  9. 假期的计划又全泡汤了!!!

    前言 大家好,我是小麦,好久不见! 今天不聊技术!也不聊假期都做了什么,单纯地聊一聊为什么在假期容易失控. 其实这里的话题有点"不正经",我们暂时把失控定义成因为去做了其他的事情浪 ...

最新文章

  1. python之⾯向对象基础
  2. [笔记]解决m2eclipse给项目添加maven依赖管理时可能不给项目的build path...
  3. python培训班哪些比较好-python培训机构哪家比较好?
  4. SAP IBASE hierarchy remove - debug in ERP step1
  5. 02365计算机软件基础,自考02365《计算机软件基础(二)》习题解答.pdf
  6. 【例8】合唱队形(《信息学奥赛一本通第五版》)
  7. 关于 Hibernate 中的“脏数据”、“脏对象”
  8. MODIS R包下载数据
  9. react框架设计原理及生命周期
  10. 用PS制作电子签名方法总结
  11. Chrome主页为360首页
  12. php电子邮件群发源码,php电子邮件群发源码
  13. JS_综合,全面性增删改查,多条件查询,排序,点击发货
  14. 成长与发展---怎么给博士军团当好“博导”?(PL)
  15. 执念与释然,一念之间
  16. 生成Excel文件并上传到阿里云OSS
  17. 一种效果很好的自动白平衡技术(WhiteBalance)
  18. springmvc页面跳转错误404/找不到页面/拒绝访问
  19. 进程的攻与“防” ---- 进程隐藏(Win7 x32 绕过PC Hunter)
  20. C++ | shared_ptr与weak_ptr

热门文章

  1. [JavaWeb-MySQL]MySQL服务启动和关闭
  2. 高等数学上-赵立军-北京大学出版社-题解-练习5.8
  3. 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding
  4. word List 34
  5. 数据结构---prim最小生成树
  6. #6682. 梦中的数论(Min25筛)
  7. CF436F Banners(分块/凸包/单调队列)
  8. HDU - 7028 Decomposition 无向完全图构造欧拉回路
  9. Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维
  10. Educational Codeforces Round 101 (Rated for Div. 2) D. Ceil Divisions 思维 + 根号数