HDU1874-畅通工程续-最短路(dijkstra)
2015-08-30 09:49
295 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
dijkstra算法模板题1A
dijkstra算法模板题1A
#include<iostream> #include<string> #include<cstdio> #include<cstring> #include<map> #include<queue> #include<cmath> #include<stack> #include<set> #include<vector> #include<algorithm> #define LL long long #define inf 1<<29 #define s(a) scanf("%d",&a) #define CL(a,b) memset(a,b,sizeof(a)) using namespace std; const int N=205; int n,m,a,b,c; int Map ; int dist ; bool vis ; void dijkstra() { CL(vis,false); for(int i=1;i<=n;i++) dist[i]=Map[a][i]; vis[a]=true; while(1){ int v=-1; for(int u=1;u<=n;u++){ if(!vis[u]&&(v==-1||dist[u]<dist[v])) v=u; } if(v==-1) break; vis[v]=true; for(int u=1;u<=n;u++){ dist[u]=min(dist[u],dist[v]+Map[v][u]); } } } int main() { int t; while(~scanf("%d%d",&n,&m)){ n++; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) Map[i][j]=inf; Map[i][i]=0; } for(int i=0;i<m;i++){ scanf("%d%d%d",&a,&b,&c);a++;b++; if(Map[a][b]>c) Map[a][b]=Map[b][a]=c; } scanf("%d%d",&a,&b);a++;b++; dijkstra(); if(dist[b]==inf) printf("-1\n"); else printf("%d\n",dist[b]); } return 0; }
相关文章推荐
- 百度地图动态添加数据及条件查询
- nginx搭建与配置
- 【JQuery】jQuery自制简易手风琴效果(附实现原理)
- Screensaver<用线段树维护函数系数>
- gzip压缩算法 http://blog.csdn.net/hguisu/article/details/7795435
- iOS开发中frame与Bounds的区别,以及几何方法的小结
- POJ_3262 Protecting the Flowers(greedy)
- UUID.randomUUID().toString 简单解释
- [转]解决GET请求时中文乱码的问题
- 第6周周报
- 简单谈谈javascript中的变量、作用域和内存问题
- 【翻译自mos文章】为DataGuard的 Redo Transport 启用加密
- Ubuntu 14.04下安装Hadoop2.4.0 (单机模式)
- C语言新建临时文件和临时文件名的方法
- yum工具使用举例
- 嵌入式工程师必知必会 —— 读书笔记1、需掌握的知识
- Rikka with Tree(DFS+树的性质)
- Google学术指数2015版
- Objective-C 【多个对象内存管理(野指针&内存泄漏)】
- Objective-C 【多个对象内存管理(野指针&内存泄漏)】