http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808

题意:……

思路:和之前的天梯赛的一题一样,但是简单点。

没办法直接用点去算。把边看成点去做,规定dis[i]为走完第i条边之后即达到edge[i].v这个点的时候需要的花费。

点数为2*m。如果用普通的Dijkstra和SPFA会超时,所以用优先队列优化的Dijkstra。

 #include <bits/stdc++.h>
using namespace std;
#define N 100010
typedef long long LL;
const LL INF = 1000000000000000000LL;
struct Edge {
int u, v, nxt, w, c;
} edge[N*];
struct Node {
LL d; int id;
bool operator < (const Node &rhs) const {
return d > rhs.d;
}
};
int head[N], tot, n, m;
bool vis[N*];
LL dis[N*]; void Add(int u, int v, int w, int id) {
edge[tot] = (Edge) { u, v, head[u], w, id}; head[u] = tot++;
edge[tot] = (Edge) { v, u, head[v], w, id}; head[v] = tot++;
} LL Dijkstra() {
for(int i = ; i < tot; i++) dis[i] = INF;
memset(vis, , sizeof(vis));
LL ans = INF;
priority_queue<Node> que;
while(!que.empty()) que.pop(); for(int i = head[]; ~i; i = edge[i].nxt)
que.push((Node) {edge[i].w, i}), dis[i] = edge[i].w;
while(!que.empty()) {
Node now = que.top(); que.pop();
int pree = now.id; LL pred = now.d;
if(vis[pree]) continue; vis[pree] = ;
int u = edge[pree].v;
if(u == n && ans > pred) ans = pred;
for(int i = head[u]; ~i; i = edge[i].nxt) {
int nowe = i;
LL nowd = dis[pree] + edge[nowe].w + abs(edge[nowe].c - edge[pree].c);
if(nowd < dis[nowe] && !vis[nowe]) {
dis[nowe] = nowd;
que.push((Node) { nowd, nowe });
}
}
}
return ans;
} int main() {
while(~scanf("%d%d", &n, &m)) {
memset(head, -, sizeof(head)); tot = ;
for(int i = ; i <= m; i++) {
int u, v, c, w;
scanf("%d%d%d%d", &u, &v, &c, &w);
Add(u, v, w, c);
}
printf("%lld\n", Dijkstra());
}
return ;
}
/*
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
*/

CSU 1808:地铁(Dijkstra)的更多相关文章

  1. CSU 1808: 地铁 最短路

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 1808: 地铁 Time Limit: 5 SecMemory Limit: ...

  2. CSU 1808 地铁 (Dijkstra)

    Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci ...

  3. CSU 1808 - 地铁 - [最短路变形]

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 Time limit: 5000 ms Memory limit: 13107 ...

  4. CSU 1808 地铁(最短路变形)

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题意: Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站, ...

  5. 【最短路】【STL】CSU 1808 地铁 (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 题目大意: N个点M条无向边(N,M<=105),每条边属于某一条地铁Ci ...

  6. CSU 1808 地铁

    题意: ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci 号线,位于站 ai,bi 之间,往返均需要花费 ti 分钟 ...

  7. CSU1808 地铁 —— dijkstra变形

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题解:由于中转线路需要花费一定的时间,所以一般的以顶点为研究对象的dijkst ...

  8. 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛

    传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...

  9. CSUOJ 1808 地铁

    Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci ...

随机推荐

  1. 项目管理 BUG管理 —— 禅

    眼下市场管理BUG该平台是非常,例如 QC(Quality Center) 国际顶级.功能强大但收费. Bugzilla 开源免费.功能还不错.但界面丑陋,配置繁琐. EasyBUG 在线式.无需配置 ...

  2. C# ToString() 数据格式

    double[] numbers= {1054.32179, -195489100.8377, 1.0437E21, -1.0573e-05}; string[] specifiers = { &qu ...

  3. C#调用C/C++ DLL 参数传递和回调函数的总结

    原文:C#调用C/C++ DLL 参数传递和回调函数的总结 Int型传入: Dll端: extern "C" __declspec(dllexport) int Add(int a ...

  4. 前端PS常用切图技巧

    前言:前端涉及到的 ps 操作不算复杂,基本上就是切图,本文总结了常用的几种切图技巧. 工具:photoshop cs6 . photoshop cc 1. 传统切图 01 这是最笨的一种方法,核心就 ...

  5. FTPHelper

    转载自 :https://blog.csdn.net/jiankunking/article/details/50016043 using System; using System.Collectio ...

  6. ELINK编程器典型场景之远程镜像

    当不想直接提供Hex/Bin等二进制程序文件给用户时,通过生成远程镜像功能将程序文件加密后,再提供给用户自行脱机下载来达到远程更新的目的. 远程镜像生成的一般步骤为由客户端提供SN码,本地依据SN码加 ...

  7. 图像滤镜艺术---(Nostalgla Filter)老照片滤镜

    原文:图像滤镜艺术---(Nostalgla Filter)老照片滤镜 (Nostalgla Filter)老照片滤镜 Nostalgla Filter主要是通过算法来模拟一种复古,陈旧的照片风格,以 ...

  8. SignalR--Web客户端

    原文:SignalR--Web客户端 这里说web客户端其实是JavaScript起的作用,也可以说是JavaScript客户端. 官方的标题的JavaScript客户端. 下面的翻译,同样的代码的形 ...

  9. Android零基础入门第38节:初识Adapter

    原文:Android零基础入门第38节:初识Adapter 在上一节一起了解了ListView的简单使用,那么本节继续来学习与ListView有着千丝万缕的Adapter. 一.了解MVC模式 在开始 ...

  10. 企业级架构 MVVM 模式指南 (WPF 和 Silverlight 实现) 译(2)

    本书包含的章节内容 第一章:表现模式,以一个例子呈献给读者表现模式的发展历程,我们会用包括MVC和MVP在内的各种方式实现一个收费项目的例子.沿此方向,我们会发现每一种模式的问题所在,这也是触发设计模 ...