【upc】山路 (ghat) | 思维、最短路
问题 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) | 思维、最短路相关推荐
- 山路 (ghat)--(最短路-最小生成树//超级原点)
感谢光神送来rating38000分的思路 题目描述 会和神奈子一起改变地形,开凿地下洞穴等.虽说是一起,不过看起来改变土地是诹访子的工作.与其说她是直接将大地整平,不如说这是她麾下的崇神的功劳.-- ...
- Deleting Edges 思维 最短路 删边
题意 :给一有向图,删去图中某些边(可以不删),使剩下的边构成一颗树,且0号点到每个点的距离依然为原图中0号点到每个点的最短距离.求删边的方案数,即新图所有可能性的方案数. 思路 :先用dijkstr ...
- HDU - 4370 0 or 1(思维+最短路)
题目链接:点击查看 题目大意:给定一个n*n的矩阵,需要构造出一个n*n的矩阵,规定矩阵只能由0或1组成,使得最小. 题目解析:题意很明确,但是却很抽象,我们需要从图论的角度来看待三个初始条件: 假设 ...
- codeforces773 D. Perishable Roads(思维+最短路)
D. Perishable Roads 题意简述: 一个 nnn 个点的完全图 以 iii 为根节点时 询问 能构造的树的 ∑d(x)\sum d(x)∑d(x) 最小是多少. d(x)d(x)d(x ...
- Acwing第 25 场周赛【完结】
被T2演了好久,T3比较简单. 目录 4073. 找规律输出[签到] 4074. 铁路与公路[一般 / 思维 最短路] 4075. 染色[一般 / 并查集 贪心] 4073. 找规律输出[签到] ht ...
- Codeforces Round #722 (Div. 2)
Codeforces Round #722 (Div. 2) 题号 题目 知识点 A Eshag Loves Big Arrays(题解略) 贪心 B Sifid and Strange Subseq ...
- 不能有比这个再靠谱的星座分析了
1摩羯2水瓶3双鱼4白羊5金牛6双子7巨蟹8狮子9处女10天枰11天蝎12射手 一 摩羯座 12月22日-1月19日 魔羯给人外表感觉很冷漠,其实内心是火热的,很善良,不容易拒绝别人, 尤其是自己看重 ...
- 苹果公司传奇-让人匪夷所思的创业奇迹
像许许多多硅谷的创业奇迹一样,乔布斯和他的伙伴们的创业故事中,有从大学退学.有车库工场.有技术创新.有商业模式的创新.有天使投资.有上市.有少年得志.没有的是,他居然被自己创立的企业开除了!但是,按照 ...
- [BJDCTF 2nd]假猪套天下第一 个人联系分析总结
小白第一次做CTF,多有疏漏请多多指教,如有侵权请联系删除(图片均为个人截取 一开始看界面,觉得挺正常的,因为课上最后讲的暴力破解.所以当时思维就短路了,然后就是此路不通,GG. 然后我们用" ...
最新文章
- 无线传输系统功率LCC功率补偿系统设计
- 【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
- SAP Kyma和SAP云平台上的Service instance
- 鸿蒙系统8月9日发布,8月9日,华为发布EMUI10.0系统+展示鸿蒙系统
- javascript闭包_JavaScript闭包教程–带有JS闭包示例代码
- Python学习——常见的字符串匹配
- vector与list的接口介绍与如何使用以及区别,附代码。
- Python标准库collections中与字典有关的类
- 将table导出为Excel的标准无乱码写法
- springboot前台页面写Java代码,接收后台数据,SpringBoot整合Thymeleaf的使用,实现非ajax请求后台的数据实现和遍历效果,以及数据的页面展示
- GPS从入门到放弃(十三)、接收机自主完好性监测(RAIM)
- 百度刷排名,刷流量,刷下拉软件【完全免费】胖虎图图-互动点击系统
- ios中的导航栏的隐藏方式
- 静候Google I/O 2014大会开幕
- 摔鸡蛋,摔手机问题。
- Linux添加PCF8563 RTC支持
- Anaconda3 下载安装与Labelme下载安装
- nginx配置https访问 生成ssl自签名证书,浏览器直接访问
- 免费报名 | 2016中国信息无障碍专题沙龙
- 软重启、硬重启、重启、重置概念介绍
热门文章
- Linux 下安装bcompare
- oracle rac 快速闪回区 路径,oracle 10g rac配置闪回恢复区 开启归档
- Stata面板设置与面板数据多元线性回归与泊松回归命令
- opencv棋盘格角点检测原理总结
- 动手学深度学习——卷积层
- smbclient 使用方法
- ubuntn系统中ssh安装,使用Systemback打镜像出现please remove the installation medium then press enter,丢失安装及拷贝的文件
- 【Android Camera2】Camera2开源项目源码分析汇总
- 锦江WeHotel正式启用全新“锦江会员”品牌标识;菲律宾长滩岛邀中国游客玩转海陆空 | 全球旅报...
- android 本地存储路径,Android本地存储路径学习