【CSU1808】地铁
Input
Output
#include <bits/stdc++.h>
using namespace std;
#define gg puts("gg");
#define ll long long
#define mp make_pair
#define pii pair<int, int>
#define pli pair<ll, int>
#define fi first
#define se second
const int N = 1e5+;
const ll inf = 1e16;
int n, m, tot;
struct edge{
int to, w;
edge(int to, int w):to(to), w(w){}
edge(){}
};
struct Edge{
int f, to, w;
Edge(int f, int to, int w): f(f), to(to), w(w){}
Edge(){}
};
vector<Edge> s[N];
vector< pii > newv[N];
vector<edge> ve[N*];////
ll d[N*];
void dijsktra(int n, int s){
for(int i = ; i <= n; i++) d[i] = inf;
priority_queue< pli, vector<pli>, greater< pli > > Q;
for(int i = ; i < newv[s].size(); i++){
int u = newv[s][i].se;
d[u] = ;
Q.push( mp(, u) );
}
while(!Q.empty()){
pli f = Q.top();
Q.pop();
ll dis = f.fi;
int x = f.se;
if(d[x] < dis)
continue ;
for(int i = ; i < ve[x].size(); i++){
int to = ve[x][i].to, w = ve[x][i].w;
if(d[to] > dis+w){
d[to] = dis+w;
Q.push( mp(d[to], to) );
}
}
}
} int main(){
int u, v;
while(~scanf("%d%d", &n, &m)){
int a, b, c, t;
for(int i = ; i < m; i++){
scanf("%d%d%d%d", &a, &b, &c, &t);
s[c].push_back( Edge(a, b, t) );
} tot = ;
for(int i = ; i <= n; i++){
for(int j = ; j < s[i].size(); j++){
int u = s[i][j].f, v = s[i][j].to, w = s[i][j].w;
if(newv[u].empty()||newv[u].back().first < i) newv[u].push_back( mp(i, ++tot) );
if(newv[v].empty()||newv[v].back().first < i) newv[v].push_back( mp(i, ++tot) );
int uu = newv[u].back().se, vv = newv[v].back().se;
ve[uu].push_back( edge(vv, w) );
ve[vv].push_back( edge(uu, w) );
}
}
for(int i = ; i <= n; i++){
for(int j = ; j < newv[i].size(); j++){
int u = newv[i][j-].se, v = newv[i][j].se, w = newv[i][j].fi-newv[i][j-].fi;
ve[u].push_back( edge(v, w) );
ve[v].push_back( edge(u, w) );
}
} dijsktra(tot, );
ll ans = inf;
for(int i = ; i < newv[n].size(); i++){
int x = newv[n][i].se;
ans = min(ans, d[x]);
}
printf("%lld\n", ans); for(int i = ; i <= n; i++){
s[i].clear();
newv[i].clear();
}
for(int i = ; i <= tot; i++)
ve[i].clear();
}
return ;
}
【CSU1808】地铁的更多相关文章
- CSU1808 地铁 —— dijkstra变形
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题解:由于中转线路需要花费一定的时间,所以一般的以顶点为研究对象的dijkst ...
- csu1808
csu1808 题意 n 个点间有 m 条地铁,每条地铁可能属于不同的线路,每条地铁有权值即通过时花费的时间,如果乘坐第 i 条地铁来到地铁站 s,再乘坐第 j 条地铁离开,需要花费额外的时间 \(| ...
- 基于ionic+angulajs的混合开发实现地铁APP
基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 假期实践作业:从IT角度看地铁
实习时间:2016/02/23——2016/02/26 实习地点:京港地铁14号线 实习报告: 大学四年过得真快,转眼就大三了,大学前两年半的生活可谓多姿多彩,从不懂计算机到对编程感兴趣,期待得最多的 ...
- 结对编程-地铁续(有种上个学期OO的既视感)
我们组比较特殊..三人结对 github:https://github.com/qingchanghan/WPFUI_Metro po一张照片: 石浩然,韩青长.陈彦吉 (台式机真的很高端,分屏贼帅) ...
- 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛
传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...
- 湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路
1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...
随机推荐
- QTP功能点笔记
1.QTP启动应用程序的几种方法 1)用SystemUtil.Run 1 SystemUtil.Run "C:\Program Files (x86)\HP\QuickTest Profes ...
- JS中构造函数与函数
//构造函数中,如果返回的是一个对 象,那么就保留原意. 如果返回的是非对象,比如数字.布尔和字符串,那么就返回 this,如果没有 return 语句,那么也返回this. var myFun1 = ...
- [分享]IOS开发-简单实现搜索框显示历史记录的本地缓存及搜索历史每次只能获取到一个的解决方案
注:原文:http://www.zhimengzhe.com/IOSkaifa/40433.html 1.首先,我们需要对进行过搜索的textField的输入内容进行一个NSUserDefaults的 ...
- C/C++相对论——C++中为什么要使用异常(跳转语句会造成对象没有被析构)
C++中为什么要使用异常? 很多人也许知道C++中的异常机制,很多人也许不知道.很多人知道C中常用的assert,也知道在编译时候指定NODEBUG来忽略它. 对于C语言,使用正常的if-else即是 ...
- 解决git .ignore文件无效
在用 Git 进行代码管理的时候,我们会用 .gitignore 文件来描述哪些文件是不需要进行版本管理的,也就是被忽略掉. 如果我们在第一次提交的时候,忘记添加 .gitignore 文件或者在首次 ...
- 图像的 SNR 和 PSNR 的计算
PSNR 的公式很容易搜到. http://www.360doc.com/content/12/0605/21/4129998_216244993.shtml http://blog.sina.com ...
- Linux:Ubuntu 14.04 Server 离线安装Jjava8(及在线安装)
(离线安装)首先,通过winscp上传本地下载好的jdk-8u102-linux-x64.gz (离线安装)将jdk-8u102-linux-x64.gz解压到到/usr/lib/jvm下,并把文件夹 ...
- 感冒了~ vs中py和vb实现一个小算法
1+1*2+1*2*3+--+1*2*3*n 下面是窗体,就一个按钮和编辑框. 中途还遇到了编码问题,但是感冒太难受,加上明天还要上课.就睡了~ 晚安世界.
- Adobe CS6 全系列官方下载地址 (迅雷无效) Win Mac
https://helpx.adobe.com/x-productkb/policy-pricing/cs6-product-downloads.html CS6 Design & Web P ...
- Linux开机流程
在开机时,由于80x86的特性CS(Code Segment)这个寄存器中放的都是1,而IP(Instruction Pointer)这个寄存器中全部放着0,换句话说,CS=FFFF而IP=0000. ...