题目: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相关推荐

  1. 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的最小换乘次数 ...

  2. 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 ...

  3. HDU 6386 Age of Moyu(搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6386 题意:n个点,m条边,每条边有权值,双向边.你要从1走到n,若路径上的权值一样,则只用花费1即可 ...

  4. hdu 6386 Age of Moyu (重边判断)

    本来用一个map判重边结果T了, 实际上可以直接给边上打标记即可 int n, m; struct _ {int to,w,vis;}; vector<_> g[N]; int dis[N ...

  5. HDU - 6386 - Age of Moyu (BFS分层+DFS 或者 最短路+set)

    题意: 连续相同类型的边花费为1,走不同的边花费加一,求最少花费 BFS:维护当前最少花费,每次往外扩展一步即可 最短路:set记录到达改点的边的类型都有哪些(距离相同),如果出现更小的则清空,否则若 ...

  6. hdu 6386 Age of Moyu (求最短路 优先队列)

    题意: 有n个点m条边   n个点编号为1~n   每条边都有一个值  从一条边到另一条边,如果两边的指不同 花费就要+1,如果相同就不需要花费. 先从1走到n问最小花费是多少.(一开始从点1出来花费 ...

  7. 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 ...

  8. 2018 Multi-University Training Contest 7----hdu 6386 Age of Moyu(Dijkstra)

    点击链接 题意:给你一些路径,每次换路径的id时加收一块,求到终点所需的最少钱 思路:用Dijkstra跑一遍所有路径,从某条边到另一条边如果遇到不同的路径的时候cost+1,遇到相同的保留该cost ...

  9. D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路

    D - Age of Moyu HDU - 6386 题意:双向图,m条边,每条边有一个编号id,而花费就是根据这个id的变化来确定的求1-n的最短路 思路:全值为0,1的图直接bfs按层遍历图找到n ...

最新文章

  1. 使用 CSS3 伪元素实现立体的照片堆叠效
  2. 计算机视觉三大顶级会议ICCV,CVPR,ECCV网址
  3. 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
  4. spearman相关性_Spearman的相关性及其在机器学习中的意义
  5. iOS-FMDB 使用
  6. 什么是技术档案(Technical Archives)?
  7. 项目管理10大模板Excel版(可直接套用)
  8. YOLO系列梳理(九)初尝新鲜出炉的YOLOv6
  9. python字符串和字节串有什么区别_python中的字符串和字节串
  10. h5难做吗_H5如何制作?制作H5是否很难?-
  11. Jove:[酷站推荐] http://www.everydo.com/ 中文版的basecamp. 貌似比较方便, 共享文件进度TODO. 真希望公司内部也有一个这个...
  12. html中实现鼠标悬停放大,如何实现鼠标悬停图片放大的效果。
  13. pta习题:退休日期推算
  14. Python函数 — 类型提示和存根文件
  15. 6-7 使用函数求素数和 (20 分)
  16. RestTemplate设置通用header 并获取header请求参数
  17. 2020.11.02 使用OpenCV进行图像水平和垂直线提取 【OpenCV C++】
  18. 美拍作者页视频的保存的方法
  19. 任务管理器Recent
  20. SAS编程|Array数组在adam中的常见应用

热门文章

  1. 张信哲2005虹口演唱会实录
  2. Paper Rewiew: Unsupervised Learning of Digit Recognition Using Spike-Timing-Dependent Plasticity
  3. cucumber java 实例_cucumber java从入门到精通(3)简单实现及断言
  4. 关于有符号数和无符号数
  5. MovePrevious和MoveNext的用法
  6. Android room 学习
  7. Chrome安装Xpath插件及使用-MacOS
  8. C语言中NULL的定义
  9. 易掌电脑监控软件全面升级,功能全部开放
  10. springboot 使用工厂模式+策略模式替代多重if 案例