用dijkstra来练练手

 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<map>
#include<vector>
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define MAX(a,b) (a > b ? a : b)
#define MIN(a,b) (a < b ? a : b)
#define MAXN 10000001
#define INF 1000000007
#define mem(a) memset(a,0,sizeof(a)) int w[][];
int d[];
int vis[];
int n; void dijkstra(int s)
{
d[s]=;
for(int k=;k<n;k++)
{
int m=INF;
for(int i=;i<n;i++)
{
if(!vis[i] && d[i]<=m)
m=d[s=i];
}
vis[s] = ;
for(int i=;i<n;i++)
{
d[i]=MIN(d[i], d[s]+w[s][i]);
}
}
} int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int m;
while(~scanf("%d%d",&n,&m) && (n || m))
{
mem(vis);
for(int i=;i<n;i++)
{
d[i]=INF;
for(int j=;j<n;j++)
{
w[i][j]=INF;
}
}
int a,b,x;
for(int i=;i<m;i++)
{
scanf("%d%d%d",&a,&b,&x);
w[a-][b-] = w[b-][a-] = x;
} dijkstra();
printf("%d\n",d[n] == INF?- : d[n-]); }
return ;
}

最新文章

  1. 在Linux系统下运行微信Web开发者工具
  2. Exchange管理界面
  3. 运用 Swing
  4. 写了一个简易的GBK文件向UTF8文件转换的工具
  5. Spark源码学习1.6——Executor.scala
  6. WPF入门教程系列八——布局之Grid与UniformGrid(三)
  7. iOS---检测系统通知开关状态
  8. [Design Patterns] 4. Creation Pattern
  9. SQL时间第二期_时间格式化
  10. Word 中没有Endnote工具栏的解决方法
  11. Hadoop WritableComparable接口
  12. iOS应用内支付(内购)的个人开发过程及坑!
  13. 朴素UNIX它-Linux CFS注视
  14. Sql Server实现多行数据按分组用逗号分隔成一行数据
  15. 【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发
  16. UWP 手绘视频创作工具技术分享系列 - Ink &amp; Surface Dial
  17. 【原】Spring Boot 配置swagger2没有文档解决方案
  18. Effective Java 第三版——65. 接口优于反射
  19. Maven Docker部署
  20. Eclipse实用操作

热门文章

  1. 在oracle中where 子句和having子句中的区别
  2. Codeforces Round #248 (Div. 2) C. Ryouko&#39;s Memory Note (vector 替换)
  3. hdu 1513 &amp;&amp; 1159 poj Palindrome (dp, 滚动数组, LCS)
  4. poj 3273 Monthly Expense(贪心+二分)
  5. BZOJ2626: JZPFAR
  6. asp.net实现文件解压和压缩
  7. python - os.path,路径相关操作
  8. Mac下开发常用目录
  9. svn强制提交备注信息
  10. C#中的lock关键字