Problem Description
某省自从实行了非常多年的畅通project计划后,最终修建了非常多路。只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案要比还有一些方案行走的距离要短非常多。这让行人非常困扰。



如今,已知起点和终点,请你计算出要从起点到终点。最短须要行走多少距离。
 
Input
本题目包括多组数据。请处理到文件结束。

每组数据第一行包括两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。

城镇分别以0~N-1编号。

接下来是M行道路信息。

每一行有三个整数A,B,X(0<=A,B<N,A!=B,0<X<10000),表示城镇A和城镇B之间有一条长度为X的双向道路。

再接下一行有两个整数S,T(0<=S,T<N),分别代表起点和终点。

 
Output
对于每组数据,请在一行里输出最短须要行走的距离。假设不存在从S到T的路线。就输出-1.
 
Sample Input
3 3
0 1 1
0 2 3
1 2 1
0 2
3 1
0 1 1
1 2
 
Sample Output
2
-1
代码:
#include<iostream>
#include<cstdio>
using namespace std;
#define max 99999
#define q 205
int map[205][205];
int vis[q];
int dis[q];
int m,s,e;
int dijkstra()
{
int min1,i,j,pos;
for(i=0;i<m;i++)
{
dis[i]=map[s][i]; //直接初始 s点到 i点的距离
vis[i]=0;
}
dis[s]=0;
for(i=0;i<m;i++)
{
min1=max;
for(j=0;j<m;j++)
{
if(vis[j]==0&&dis[j]<min1)
{
min1=dis[j]; //取一条最小边
pos=j;
}
}
vis[pos]=1;
for(j=0;j<m;j++)
{
if(vis[j]==0&&dis[j]>dis[pos]+map[pos][j]) //替换初始距离
dis[j]=dis[pos]+map[pos][j];
} }
if(dis[e]!=max)
return dis[e];
else
return -1;
}
int main()
{
int a,b,c;
int n,i,j;
while(~scanf("%d%d",&m,&n))
{
for(i=0;i<m;i++)
for(j=i;j<m;j++) //初始化地图
map[i][j]=map[j][i]=max;
while(n--)
{
scanf("%d%d%d",&a,&b,&c);
if(c<map[a][b]) //可能有重边取最短边
map[a][b]=map[b][a]=c;
} scanf("%d%d",&s,&e); int ss=dijkstra();
printf("%d\n",ss);
}
return 0;
}

dijkstra模板

 

HDU 1874 畅通project续 最短路径入门(dijkstra)的更多相关文章

  1. HDU 1874 畅通project续 (最短路径)

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. HDU 1874 畅通工程续(初涉dijkstra算法实现)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 dijkstra算法实现可参照此博客学习:http://www.cnblogs.com/biye ...

  3. 【floyd】HDU 1874 畅通project续

    之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放. 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种. 1.单源最短路 ...

  4. hdu 1874 畅通project续

    最短路问题,尽管a!=b,可是同一条路測评数据会给你非常多个.因此在读入的时候要去最短的那条路存起来.........见了鬼了.坑爹 #include<iostream> #include ...

  5. ACM: HDU 1874 畅通工程续-Dijkstra算法

    HDU 1874 畅通工程续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Desc ...

  6. HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题

    参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上:  迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...

  7. hdu 1874 畅通工程续

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过 ...

  8. HDU 1874畅通工程续(迪杰斯特拉算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)     ...

  9. hdoj 1874 畅通project续【SPFA】

    畅通project续 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Su ...

随机推荐

  1. js setInterval 启用&停止

    以下面例子为说明: <title></title> <script src="Scripts/jquery-1.4.1-vsdoc.js" type= ...

  2. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  3. Eclipse 无法查看第三方jar包文件源代码解决方法

    1.打开第三方依赖包,源文件的快捷键:ctrl + mouseClick 2.由于我们下载的第三方jar 包,如Spring等相关的依赖包时,并没有附加下载相应的源文件,所以经常出现如图的这种问题. ...

  4. sql partition by

    --不分班按学生成绩排名 select *,ROW_NUMBER() over(order by Score desc) as Sequence from Student id          Gr ...

  5. netbean下搭建mariadb数据库

    本人的操作系统Manjaro 最新版,mariadb版本为10.1.1,使用netbeasn开发java WEB,搭建过程如下: 1.安装数据库 pacman -S mariadb 2.启动数据库服务 ...

  6. 记录: 百度webuploader 分片文件上传java服务器端(spring mvc)示例的优化

    最近项目上用到文件分片上传,于是找到了百度的一个开源前端控件webuploader. 于是尝试使用. 下载下来后,它提供的服务器端示例代码是php版的,那么Java版的呢? 其实,上传文件都是按照rf ...

  7. 527. Word Abbreviation

    Given an array of n distinct non-empty strings, you need to generate minimal possible abbreviations ...

  8. hdu 1215(因子和)

    七夕节 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. 关于Integer的parseInt(String s, int radix)方法的使用

    我们平时用到Integer.parseInt("123");其实默认是调用了int i =Integer.parseInt("123",10); 其中10代表的 ...

  10. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...