题意:一张 nnn 个点 mmm 条边的无向图,边带距离,可以坐出租车,花费为距离除以常数 rrr 向上取整;也可以坐公交车,每路车行驶路线给定,无论坐多少站花费都为 cic_ici​ (每路车可能不同)。qqq 次询问 sss 到 ttt 的最小花费。

n,m≤2×105,q≤10n,m\leq 2\times 10^5,q\leq 10n,m≤2×105,q≤10

对于一路公交车建一个虚点向所有车站连边即可

公交车直接记录余数,在虚点的位置清空。

因为 dijkstra 只需要保证有偏序关系,a,b≤a+ba,b\leq a+ba,b≤a+b ,实际上限制非常松,所以可以保证正确性。

#include <iostream>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <queue>
#include <utility>
#define MAXN 250005
#define MAXM 1200005
using namespace std;
typedef long long ll;
const int INF=1e9;
inline int read()
{int ans=0;char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;
}
int n,m,k,r,q;
struct dist{ll c;int f;inline dist(const int& c=0,const int& f=0):c(c),f(f){}};
inline dist operator +(const dist& a,const dist& b)
{if (b.f==-1) return dist(a.c+b.c+(a.f>0),0);dist ans(a.c+b.c,max(a.f+b.f,0));if (ans.f>r) ++ans.c,ans.f-=r;return ans;
}
inline bool operator <(const dist& a,const dist& b){return a.c==b.c? a.f<b.f:a.c<b.c;}
struct edge{int u,v;dist w;}e[MAXM];
int head[MAXN],nxt[MAXM],cnt;
inline void addnode(int u,int v,dist w)
{e[++cnt]=(edge){u,v,w};nxt[cnt]=head[u];head[u]=cnt;
}
dist dis[MAXN];
typedef pair<dist,int> pi;
void dij(int s)
{for (int i=1;i<=n+k;i++) dis[i]=dist(INF);dis[s]=dist(0);priority_queue<pi,vector<pi>,greater<pi> > q;q.push(make_pair(dis[s],s));while (!q.empty()){int u=q.top().second;q.pop();for (int i=head[u];i;i=nxt[i])if (dis[u]+e[i].w<dis[e[i].v]){dis[e[i].v]=dis[u]+e[i].w;q.push(make_pair(dis[e[i].v],e[i].v));}}
}
int main()
{n=read(),m=read(),k=read(),r=read(),q=read();for (int i=1;i<=m;i++){int u,v,w;u=read(),v=read(),w=read();dist t=dist(w/r,w%r);addnode(u,v,t),addnode(v,u,t);}for (int i=1;i<=k;i++){int t,c;t=read(),c=read();while (t--){int u=read();addnode(u,n+i,dist());addnode(n+i,u,dist(c,-1));}}while (q--){int s,t;s=read(),t=read();dij(s);printf("%lld\n",dis[t].c+(dis[t].f>0));}return 0;
}

【牛客NOIP模拟】路径难题【建图】【最短路证明】相关推荐

  1. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】

    题意: n×mn\times mn×m 的网格图,每个点有两个权值 vali,j,bufi,jval_{i,j},buf_{i,j}vali,j​,bufi,j​,从 (1,1)(1,1)(1,1) ...

  2. 【牛客NOIP模拟】牛半仙的魔塔(增强版)【贪心】【并查集】

    题意:一个魔塔游戏的地图是一棵以 111 为根的树,起点为根,除根外每个结点有一个怪物,给定每个怪物血量.攻击.防御.奖励蓝宝石个数(加防御),勇士的血量.攻击.防御,遇到怪物必须战斗,勇士永远先手, ...

  3. 【牛客NOIP模拟】牛半仙的妹子序列【DP】【Segment Tree Beats】

    题意:排列的极长上升子序列个数 n≤2×105n\leq 2\times 10^5n≤2×105 显然有个 dp fn=∑i<n,pi<pn,∄i<j<ns.t. pi< ...

  4. 牛客NOIP暑期七天营-提高组1

    牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子. 但是边权不为0 除了第一个有0的不行. x连向上一个比他小的数. 期间判断有无解. #include <bits/std ...

  5. 牛客网 New Game! 建图+最短路

    链接:https://www.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  6. 牛客练习赛74 D CCA的图

    牛客地址 题意:中文题目很简单,就是每条路径有一个w权值,你要从s到t,问你,从s到t的路径中,w的最小值为L,最大值为R,你要保证L尽可能的大的情况下R尽量小,输出该L和R值 思路:可以先从权值最大 ...

  7. 牛客多校2 - Interval(网格图最大流转换为对偶图最短路)

    题目链接:点击查看 题目大意:给出一个区间,初始时为 [ 1 , n ] ,每次操作可以将 [ l , r ] 变为下面的其中之一: [ l + 1 , r ] [ l , r - 1 ] [ l - ...

  8. 【2020牛客NOIP赛前集训营-提高组(第一场)题解】( 牛牛的方程式,牛牛的猜球游戏,牛牛的凑数游戏,牛牛的RPG游戏)

    未完待续... T1:牛牛的方程式 title solution code T2:牛牛的猜数游戏 title solution code T3:牛牛的凑数游戏 title solution code ...

  9. 2020牛客NOIP赛前集训营-普及组第三场C牛半仙的妹子树

    链接:https://ac.nowcoder.com/acm/contest/7608/C 来源:牛客网 牛半仙有 n​ 个妹子,她们所在的位置组成一棵树,相邻两个妹子的距离为 1​. 有 m​ 个妹 ...

最新文章

  1. js能关闭HTML页面,javascript可以关闭吗
  2. oracle经典书籍推荐
  3. nginx日志自动切割
  4. ActiveMQ整合spring
  5. 聊一聊Kafka分区的隐藏属性——二次归类
  6. c#操作word表格
  7. 删除所有的distribution chain再保存的后台执行逻辑
  8. 听说容器正在吃掉整个软件世界?
  9. 中文电子病例命名实体识别项目
  10. php 自带多进程,php多进程实现
  11. LTE学习:MCS(调制与编码策略) CSI(信道状态信息)
  12. 设系统中有三种类型的资源(A,B,C)的五个进程(P1,P2,P3,P4,P5)。A资源的数量为17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态如表所示。
  13. python字符串驻留机制_Python中的字符串驻留
  14. Python学习之not,and,or篇
  15. 华为核心合作伙伴极力推荐的开源ERP使用教程:Odoo库存管理应用
  16. AltiumDesigner VS 立创EDA —— PCB绘图软件选择
  17. html 载入视频flv,HTML中嵌入FLV视频文件
  18. 计算飞机票价格python_Python 带你薅羊毛:手把手教你揪出特价机票信息
  19. html和linux下目录路径中 杠,点杠,点点杠区别
  20. 饥荒联机版专用服务器怎么修改小偷包,饥荒联机小偷背包代码 | 手游网游页游攻略大全...

热门文章

  1. 史上最“可怕”的数学科普,能全都看懂的只有天才!
  2. 为什么卫星天线长得像口大锅?
  3. 盘点这些年被黑的最惨的语言
  4. 每日一笑 | 终于知道为什么胖了之后气质会垮了
  5. 入门机器学习,开启人工智能大门!
  6. 资料分享 | 数据挖掘实例资料分享来袭
  7. 推荐7个高质量的学术公众号
  8. c 中oracle连接字符串,Oracle连接字符串C#
  9. mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查
  10. socket python json_python实现的基于TCP的JSON数据通信