问题 H: 山路 (ghat)

时间限制: 1 Sec  内存限制: 128 MB
提交 状态

题目描述

会和神奈子一起改变地形,开凿地下洞穴等。虽说是一起,不过看起来改变土地是诹访子的工作。与其说她是直接将大地整平,不如说这是她麾下的崇神的功劳。——「求闻口授」

山路交错相同,令人烦躁。
于是诹访子想要将山路重新规划,具体的说,山路可以看成 n 个点,m  条边的无向图。她会在这幅图上的基础之上添加一些边,具体的说,她会给每个点设一个权值ai ,然后将点两两之间连边,假如连了一条边为(i,j) ,那么这条边的长度为|ai + k × aj|  ,其中 k=1 或 -1。
几千年过去之后,已经没什么人再记得曾经有诹访子这样一位神,然而山路却完整地保留到了今天。
那么你作为一个普通人,现在想要从 1 号点走到 n 号点去,你想知道最短的路径长度是多少?

输入

第一行三个数:n,m,k 。
接下来 m 行:每行三个数ui,vi,wi  ,描述一条边连接 ui,vi 长度为 wi。
接下来一行: n个整数,第 i 个整数表示ai。

输出

一行一个整数代表答案。

样例输入 Copy

3 1 -1
1 2 3
1 7 8

样例输出 Copy

4

题目大意:

中文题意

题目思路:

嗯...

鸽了一周,最后在铭宇巨巨的催促下,昨晚ko

其实想麻烦了,图论题无非就是将操作转换为建图

那么对于k = 1,新增一个超级原点0 ,每个点都向他连接一条边,边权为点权 ,双向

对于k = -1,直接跑一下差分就可以了,排序完之后满足差分关系

Code:

/*** keep hungry and calm CoolGuang!***/
#include <bits/stdc++.h>
#include<stdio.h>
#include<queue>
#include<algorithm>
#include<string.h>
#include<iostream>
#define debug(x) cout<<#x<<":"<<x<<endl;
#define d(x) printf("%lld\n",x);
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const ll INF= 1e17;
const ll maxn = 1e6+700;
const int mod= 1e9+7;
template<typename T>inline void read(T &a){char c=getchar();T x=0,f=1;while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}a=f*x;}
ll n,m,p;
vector<pair<ll,ll>>v[maxn];
ll dis[maxn];
int vis[maxn];
set<pair<int,int>>s;
struct node{int x,id;bool friend operator<(node a,node b){if(a.x == b.x) return a.id < b.id;return a.x < b.x;}
}q[maxn];ll spfa(){queue<int>q;for(int i=0;i<=n;i++) dis[i] = INF,vis[i] = 0;q.push(1);vis[1] = 1;dis[1] = 0;while(!q.empty()){int u = q.front();q.pop();vis[u] = 0;for(auto x:v[u]){int e = x.first,w = x.second;if(dis[e]> dis[u] + w){dis[e] = dis[u] + w;if(!vis[e]) q.push(e),vis[e] = 1;}}}return dis[n];
}
int main(){read(n);read(m);read(p);for(int i=1;i<=m;i++){int x,y,w;read(x);read(y);read(w);v[x].push_back({y,w});v[y].push_back({x,w});}for(int i=1;i<=n;i++){read(q[i].x);q[i].id = i;}///123456debug(1);sort(q+1,q+1+n);if(p == 1){for(int i=1;i<=n;i++) {v[0].push_back({q[i].id,q[i].x});v[q[i].id].push_back({0,q[i].x});}}else{for(int i=2;i<=n;i++){v[q[i].id].push_back({q[i-1].id,q[i].x-q[i-1].x});v[q[i-1].id].push_back({q[i].id,q[i].x-q[i-1].x});}}printf("%lld\n",spfa());return 0;
}
/***
4 3 1
1 2 3
2 3 1
3 4 1
1 1 1 1
***/

【upc】山路 (ghat) | 思维、最短路相关推荐

  1. 山路 (ghat)--(最短路-最小生成树//超级原点)

    感谢光神送来rating38000分的思路 题目描述 会和神奈子一起改变地形,开凿地下洞穴等.虽说是一起,不过看起来改变土地是诹访子的工作.与其说她是直接将大地整平,不如说这是她麾下的崇神的功劳.-- ...

  2. Deleting Edges 思维 最短路 删边

    题意 :给一有向图,删去图中某些边(可以不删),使剩下的边构成一颗树,且0号点到每个点的距离依然为原图中0号点到每个点的最短距离.求删边的方案数,即新图所有可能性的方案数. 思路 :先用dijkstr ...

  3. HDU - 4370 0 or 1(思维+最短路)

    题目链接:点击查看 题目大意:给定一个n*n的矩阵,需要构造出一个n*n的矩阵,规定矩阵只能由0或1组成,使得最小. 题目解析:题意很明确,但是却很抽象,我们需要从图论的角度来看待三个初始条件: 假设 ...

  4. codeforces773 D. Perishable Roads(思维+最短路)

    D. Perishable Roads 题意简述: 一个 nnn 个点的完全图 以 iii 为根节点时 询问 能构造的树的 ∑d(x)\sum d(x)∑d(x) 最小是多少. d(x)d(x)d(x ...

  5. Acwing第 25 场周赛【完结】

    被T2演了好久,T3比较简单. 目录 4073. 找规律输出[签到] 4074. 铁路与公路[一般 / 思维 最短路] 4075. 染色[一般 / 并查集 贪心] 4073. 找规律输出[签到] ht ...

  6. Codeforces Round #722 (Div. 2)

    Codeforces Round #722 (Div. 2) 题号 题目 知识点 A Eshag Loves Big Arrays(题解略) 贪心 B Sifid and Strange Subseq ...

  7. 不能有比这个再靠谱的星座分析了

    1摩羯2水瓶3双鱼4白羊5金牛6双子7巨蟹8狮子9处女10天枰11天蝎12射手 一 摩羯座 12月22日-1月19日 魔羯给人外表感觉很冷漠,其实内心是火热的,很善良,不容易拒绝别人, 尤其是自己看重 ...

  8. 苹果公司传奇-让人匪夷所思的创业奇迹

    像许许多多硅谷的创业奇迹一样,乔布斯和他的伙伴们的创业故事中,有从大学退学.有车库工场.有技术创新.有商业模式的创新.有天使投资.有上市.有少年得志.没有的是,他居然被自己创立的企业开除了!但是,按照 ...

  9. [BJDCTF 2nd]假猪套天下第一 个人联系分析总结

    小白第一次做CTF,多有疏漏请多多指教,如有侵权请联系删除(图片均为个人截取 一开始看界面,觉得挺正常的,因为课上最后讲的暴力破解.所以当时思维就短路了,然后就是此路不通,GG. 然后我们用" ...

最新文章

  1. 无线传输系统功率LCC功率补偿系统设计
  2. 【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
  3. SAP Kyma和SAP云平台上的Service instance
  4. 鸿蒙系统8月9日发布,8月9日,华为发布EMUI10.0系统+展示鸿蒙系统
  5. javascript闭包_JavaScript闭包教程–带有JS闭包示例代码
  6. Python学习——常见的字符串匹配
  7. vector与list的接口介绍与如何使用以及区别,附代码。
  8. Python标准库collections中与字典有关的类
  9. 将table导出为Excel的标准无乱码写法
  10. springboot前台页面写Java代码,接收后台数据,SpringBoot整合Thymeleaf的使用,实现非ajax请求后台的数据实现和遍历效果,以及数据的页面展示
  11. GPS从入门到放弃(十三)、接收机自主完好性监测(RAIM)
  12. 百度刷排名,刷流量,刷下拉软件【完全免费】胖虎图图-互动点击系统
  13. ios中的导航栏的隐藏方式
  14. 静候Google I/O 2014大会开幕
  15. 摔鸡蛋,摔手机问题。
  16. Linux添加PCF8563 RTC支持
  17. Anaconda3 下载安装与Labelme下载安装
  18. nginx配置https访问 生成ssl自签名证书,浏览器直接访问
  19. 免费报名 | 2016中国信息无障碍专题沙龙
  20. 软重启、硬重启、重启、重置概念介绍

热门文章

  1. Linux 下安装bcompare
  2. oracle rac 快速闪回区 路径,oracle 10g rac配置闪回恢复区 开启归档
  3. Stata面板设置与面板数据多元线性回归与泊松回归命令
  4. opencv棋盘格角点检测原理总结
  5. 动手学深度学习——卷积层
  6. smbclient 使用方法
  7. ubuntn系统中ssh安装,使用Systemback打镜像出现please remove the installation medium then press enter,丢失安装及拷贝的文件
  8. 【Android Camera2】Camera2开源项目源码分析汇总
  9. 锦江WeHotel正式启用全新“锦江会员”品牌标识;菲律宾长滩岛邀中国游客玩转海陆空 | 全球旅报...
  10. android 本地存储路径,Android本地存储路径学习