HDU 6386 Age of Moyu
题目:Age of Moyu
思路:裸的堆优化dijkstra
代码:
#include<bits/stdc++.h>
using namespace std;#define maxn 200000
#define inf (1LL<<40)
#define LL long longstruct Pair{LL y,z,col;Pair(){}Pair(LL yy,LL zz,LL c=0) {y=yy,z=zz,col=c;}bool operator < (const Pair oth) const {return z>oth.z;}
};LL n,m;
vector<Pair> a[maxn+5];
bool Use[maxn+5]={0};void readin() {for(LL i=1;i<=m;i++) {LL x,y,z;scanf("%lld%lld%lld",&x,&y,&z);a[x].push_back(Pair(y,z));a[y].push_back(Pair(x,z));}
}void init() {for(LL i=1;i<=n;i++) a[i].clear();
}LL dijkstra(){LL dist[maxn+5];for(LL i=1;i<=n;i++) dist[i]=inf;dist[1]=0;Use[1]=0;priority_queue<Pair> que;que.push(Pair(1,0));while(!que.empty()) {Pair h=que.top();que.pop();if(Use[h.y]) continue;for(LL i=0;i<a[h.y].size();i++){Pair x=a[h.y][i];if((h.col!=x.z)+h.z<dist[x.y]) {dist[x.y]=(h.col!=x.z)+h.z;que.push(Pair(x.y,dist[x.y],x.z));}}}return dist[n];
}int main() {while(~scanf("%lld%d",&n,&m)) {init();readin();LL ans=dijkstra();if(ans==inf) ans=-1;printf("%lld\n",ans);}return 0;
}
HDU 6386 Age of Moyu相关推荐
- HDU 6386 Age of Moyu DFS+BFS
/** HDU 6386 Age of Moyu DFS+BFS 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6386题意:1-->n的最小换乘次数 ...
- HDU 6386 Age of Moyu 2018 Multi-University Training Contest 7(最短路径dijkstra)
Age of Moyu 题意:第一行给出n,m,接下来有m条路,每一行给出 a b c ,从a到b 是c掌控. 若下一条路与上一条路不属于一个c,需要缴费1. 输出从1到N的最小花费,不通则输出-1 ...
- HDU 6386 Age of Moyu(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6386 题意:n个点,m条边,每条边有权值,双向边.你要从1走到n,若路径上的权值一样,则只用花费1即可 ...
- hdu 6386 Age of Moyu (重边判断)
本来用一个map判重边结果T了, 实际上可以直接给边上打标记即可 int n, m; struct _ {int to,w,vis;}; vector<_> g[N]; int dis[N ...
- HDU - 6386 - Age of Moyu (BFS分层+DFS 或者 最短路+set)
题意: 连续相同类型的边花费为1,走不同的边花费加一,求最少花费 BFS:维护当前最少花费,每次往外扩展一步即可 最短路:set记录到达改点的边的类型都有哪些(距离相同),如果出现更小的则清空,否则若 ...
- hdu 6386 Age of Moyu (求最短路 优先队列)
题意: 有n个点m条边 n个点编号为1~n 每条边都有一个值 从一条边到另一条边,如果两边的指不同 花费就要+1,如果相同就不需要花费. 先从1走到n问最小花费是多少.(一开始从点1出来花费 ...
- HDU - 6386 Age of Moyu
Mr.Quin love fishes so much and Mr.Quin's city has a nautical system,consisiting ofNN ports and MM s ...
- 2018 Multi-University Training Contest 7----hdu 6386 Age of Moyu(Dijkstra)
点击链接 题意:给你一些路径,每次换路径的id时加收一块,求到终点所需的最少钱 思路:用Dijkstra跑一遍所有路径,从某条边到另一条边如果遇到不同的路径的时候cost+1,遇到相同的保留该cost ...
- D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路
D - Age of Moyu HDU - 6386 题意:双向图,m条边,每条边有一个编号id,而花费就是根据这个id的变化来确定的求1-n的最短路 思路:全值为0,1的图直接bfs按层遍历图找到n ...
最新文章
- 使用 CSS3 伪元素实现立体的照片堆叠效
- 计算机视觉三大顶级会议ICCV,CVPR,ECCV网址
- 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
- spearman相关性_Spearman的相关性及其在机器学习中的意义
- iOS-FMDB 使用
- 什么是技术档案(Technical Archives)?
- 项目管理10大模板Excel版(可直接套用)
- YOLO系列梳理(九)初尝新鲜出炉的YOLOv6
- python字符串和字节串有什么区别_python中的字符串和字节串
- h5难做吗_H5如何制作?制作H5是否很难?-
- Jove:[酷站推荐] http://www.everydo.com/ 中文版的basecamp. 貌似比较方便, 共享文件进度TODO. 真希望公司内部也有一个这个...
- html中实现鼠标悬停放大,如何实现鼠标悬停图片放大的效果。
- pta习题:退休日期推算
- Python函数 — 类型提示和存根文件
- 6-7 使用函数求素数和 (20 分)
- RestTemplate设置通用header 并获取header请求参数
- 2020.11.02 使用OpenCV进行图像水平和垂直线提取 【OpenCV C++】
- 美拍作者页视频的保存的方法
- 任务管理器Recent
- SAS编程|Array数组在adam中的常见应用
热门文章
- 张信哲2005虹口演唱会实录
- Paper Rewiew: Unsupervised Learning of Digit Recognition Using Spike-Timing-Dependent Plasticity
- cucumber java 实例_cucumber java从入门到精通(3)简单实现及断言
- 关于有符号数和无符号数
- MovePrevious和MoveNext的用法
- Android room 学习
- Chrome安装Xpath插件及使用-MacOS
- C语言中NULL的定义
- 易掌电脑监控软件全面升级,功能全部开放
- springboot 使用工厂模式+策略模式替代多重if 案例