Description

Bobo 居住在大城市 ICPCCamp。

ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号。 m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci 号线,位于站 ai,bi 之间,往返均需要花费 ti 分钟(即从 ai 到 bi 需要 ti 分钟,从 bi 到 ai 也需要 ti 分钟)。
众所周知,换乘线路很麻烦。如果乘坐第 i 段地铁来到地铁站 s,又乘坐第 j 段地铁离开地铁站 s,那么需要额外花费 |ci-cj | 分钟。注意,换乘只能在地铁站内进行。
Bobo 想知道从地铁站 1 到地铁站 n 所需要花费的最小时间。

Input

输入包含不超过 20 组数据。
每组数据的第一行包含两个整数 n,m (2≤n≤105,1≤m≤105).
接下来 m 行的第 i 行包含四个整数 ai,bi,ci,ti (1≤ai,bi,ci≤n,1≤ti≤109).
保证存在从地铁站 1 到 n 的地铁线路(不一定直达)。

Output

对于每组数据,输出一个整数表示要求的值。

Sample Input

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

Sample Output

1
3
2

Hint

以边建图,通过边的权值大小进行bfs不断更新
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define MAXN 100010
#define INF 0x3fffffff
typedef long long ll;
struct edge{ll from, to, ci,w;
};
struct node{ll x, sum;int fa;//记录连接了几个点friend bool operator <(node n1, node n2){return n1.sum>n2.sum;}
};
ll ans, n, m;
vector<int>G[MAXN];
vector<edge>edges;
priority_queue<node>q;
int vis[MAXN * 2];
void addedge(ll x, ll y, ll ci, ll w)
{edge v = { x, y, ci, w };edges.push_back(v);//边G[x].push_back(edges.size() - 1);//点
}
void bfs()
{node a = { 1, 0, -1 };q.push(a);while (!q.empty()){a = q.top();q.pop();if (a.x == n){ans = a.sum;return;}if (a.fa != -1 && vis[a.fa])continue;vis[a.fa] = 1;for (int i = 0; i < G[a.x].size(); i++){node b = a;edge v = edges[G[a.x][i]];b.x = v.to;b.fa = G[a.x][i];b.sum += v.w;if (a.fa >= 0){b.sum += abs(edges[a.fa].ci - v.ci);}q.push(b);}}
}
int main()
{while (~scanf("%lld%lld", &n, &m)){for (int i = 0; i <= n; i++)G[i].clear();edges.clear();for (int i = 1; i <= m; i++){ll x, y, ci, w;scanf("%lld%lld%lld%lld", &x, &y, &ci, &w);addedge(x, y, ci, w);addedge(y, x, ci, w);}ans = INF;memset(vis, 0, sizeof(vis));while (!q.empty())q.pop();bfs();cout << ans<< endl;}return 0;
}
/**********************************************************************Problem: 1808User: leo6033Language: C++Result: ACTime:1844 msMemory:19208 kb
**********************************************************************/

CSUOJ 1808 地铁相关推荐

  1. 湖南省第十届蓝狐网络杯大学生计算机程序设计竞赛,2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解...

    2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解 update10.01 突然发现叉姐把这场的题传到牛客上了,现在大家可以有地方提交了呢. 不知道该干什么所以就来水一篇题解 ...

  2. 湖南省第十届蓝狐网络杯大学生计算机程序设计竞赛,2018湖南省第14届大学生计算机程序设计竞赛 C: 时间旅行...

    Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中. 当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个 ...

  3. 2022-2028年中国地铁广告行业研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国地铁广告行业市场行业相关概述.中国地铁广 ...

  4. 地铁闸门会夹伤人吗_西安地铁率先推出分类垃圾箱 四种类型你会放吗?

    垃圾分类就是新时尚[西安地铁率先推出分类垃圾箱 四种类型你会放吗?]近日,不少上海人已被垃圾分类"逼疯",各类段子刷爆网络."你是什么垃圾?"直击灵魂深处的拷问 ...

  5. 如何快速坐地铁高铁?舒工为您带来满满的都是干货~

    为了比其他人多节省点时间留在做更有意义的事情上面,在人类还未发明普及瞬间控制身体移动的技术之前,以下内容是珍惜生命时间的您必读内容,请耐心阅读: 1.进出站尽量走人工楼梯,不要坐履带式电梯,如遇到升降 ...

  6. 地铁框架保护的原理_地铁屏蔽门是如何保证通讯的稳定?

    地铁作为人们出行首选交通方式,安全可靠尤为重要,在复杂的地铁控制系统中,如何保障通讯的稳定性呢?本篇文章将从地铁系统中通讯单元的简单拓扑谈谈通讯防护的方案. 随着我国经济的快速发展,地铁工程项目建设也 ...

  7. 程序员在地铁写代码遭疯狂吐槽!网友:装什么装

    01 作为了解程序员这个行业的人来说 程序员的工作真的很累 加班已经成为他们的标签 有的时候网站出事或者需求比较紧急的时候 可能路边也是他们的工作场地 所以这个时候对于程序员们的工作来说 也是不分场合 ...

  8. AI一分钟 | 妈呀!连地铁都开始无人驾驶了,飞机还远吗;北京无人驾驶新规出台,终于知道李彦宏该不该被罚了(12月19日)

    一分钟AI 中国内地首条国产无人驾驶地铁线路(燕房线)本月在京开通,是我国内地首条拥有完全自主知识产权.全自动运行的地铁线. 雅马哈AI进军音乐界,在最佳时机做出最合适的伴奏,完美配合人类音乐家 李嘉 ...

  9. 基于Dijkstra算法的武汉地铁路径规划!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale原创作者 前言 最近爬取了 ...

最新文章

  1. nginx中的502错误
  2. 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?
  3. Linux网络编程——tcp并发服务器(epoll实现)
  4. 面试问题汇总 精选 分析 解答 职业规划 part 1
  5. java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题
  6. c语言奇数正偶数负,C语言二级考试练习题循环控制结构(二)
  7. hwpfdocument 获取第一页内容_有人专注搞这3个引流渠道,精准流量获取从此变得简单...
  8. Docker 快速安装 Mysql
  9. iOS开发CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX的使用...
  10. 安装IBM HTTP SERVER
  11. [ 笔记 ] 计算机网络安全_4_网络扫描和网络监听
  12. DDR SDRAM内存优化
  13. 代理是什么及如何使用
  14. ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)
  15. H264码流打包成RTP包
  16. MongoDB高级教程
  17. Apollo path_bounds_decider解析
  18. Mac电脑使用EasyAR45的注意事项
  19. pc与管理系统案例分享
  20. 【Paper Notes】 EPro-PnP

热门文章

  1. 还没理解微前端?手把手教你实现一个迷你版
  2. 简报 | 微软与戴尔之后,财富500强企业安富利成为第三大接受BTC支付的科技公司
  3. 如何利用百度经验引流?百度经验精准引流的方法
  4. Flutter滑动体验对齐原生-滑动曲线篇
  5. linux iis安装教程,易企秀源码在linux、win主机下的安装教程和详细步骤(含伪静态设置)...
  6. 使用stream实现两个list集合的合并(对象属性的合并)
  7. AI说人“画” | Heart Broken, 游戏中被AI碾压的我们都中了哪些套路?
  8. 单片机实例2——模拟开关灯(硬件电路图+汇编程序+C语言程序)
  9. 浮点数与十六进制互相转换
  10. go文件上传断点续传功能