HDOJ 2544(Dijkstra)

简介: 最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12310 Accepted Submission(s): 5233 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。

最短路

Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12310 Accepted Submission(s): 5233


Problem Description
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

 

 

Input
输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
输入保证至少存在1条商店到赛场的路线。
 

 

Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
 

 

Sample Input
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
 

 

Sample Output
3 2
 
#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #define MAX 0x7FFFFFFF
 #define N 105
 int cls[N],map[N][N],vis[N];
 int n,m;
 /*V为源点 */ 
 void Dijkstra(int v)
 {
     int i,j,min,next;
     /*
     先用v到邻接点的距离初始化cls
     */
     for(i=1;i<=n;i++)    
	 	cls[i]=map[v][i];
     memset(vis,0,sizeof(vis));
     vis[v]=1;//起点访问标志置1
     for (i=1;i<n;i++)
     {
         min=MAX;
         next=v;
         /*找出离集合最近的那个点next,以及该点到集合的距离min*/
         for (j=1;j<=n;j++)
         {
             if(!vis[j]&&cls[j]<min)
             {
                 next=j;
                 min=cls[j];
             }
         }
         vis[next]=1;
         for (j=1;j<=n;j++)
         {
         	/*j点没有被访问过,j点和next点之间有通路,next点到j点的距离+集合到nxt的距离<集合到j的距离*/
             if(!vis[j]&&map[next][j]<MAX&&(min+map[next][j])<cls[j])
                 cls[j]=cls[next]+map[next][j];
         }
     }
 }
 int main()
 {
     int a,b,c;int i,j;
     while(scanf("%d%d",&n,&m),m||n)
     {
         for(i=0;i<N;i++)
         	for(j=0;j<N;j++)
         		map[i][j]=MAX;
         while(m--)
         {
             scanf("%d%d%d",&a,&b,&c);
             if(map[a][b]>c)    
			 	map[a][b]=map[b][a]=c;
         }
         Dijkstra(1);
         printf("%d\n",cls[n]);
     }
     return 0;
 }

 

目录
相关文章
|
5月前
|
缓存 网络协议 安全
基于C#实现欧姆龙PLC FINS/TCP通信
基于C#实现欧姆龙PLC FINS/TCP通信
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
1480 6
|
12月前
|
Web App开发 前端开发 JavaScript
《前端定位探秘:fixed定位的深度剖析与transform的神秘影响》
本文深入探讨了CSS中fixed定位的原理及其与祖先元素transform属性的交互关系。fixed定位通常以视口为参考,使元素固定于屏幕特定位置,广泛用于导航栏、悬浮按钮等场景。然而,当祖先元素应用了transform(如平移、旋转、缩放)时,会创建新的堆叠上下文和包含块,导致fixed定位元素的参照系从视口切换到该祖先元素,从而改变其行为。
415 18
|
IDE 开发工具 Windows
手把手教你调整电脑磁盘的分区大小
手把手教你调整电脑磁盘的分区大小
1696 0
手把手教你调整电脑磁盘的分区大小
|
消息中间件 安全 Dubbo
java 的Remote 的使用
在Java中,"Remote" 的概念通常与Java RMI(Remote Method Invocation,远程方法调用)技术相关,它允许一个Java虚拟机(JVM)上的对象调用另一个JVM上对象的方法,就像调用本地对象一样。但是,值得注意的是,从Java 9开始,RMI已经被标记为不推荐使用(deprecated),并且在新版本的Java中可能不再得到支持和更新。尽管如此,了解RMI的基本概念仍然对理解分布式Java应用程序的设计和开发有所帮助。 ### RMI的基本步骤 1. **定义远程接口**: 远程接口是扩展了 `java.rmi.Remote` 接口的Java接口。它
1327 13
|
存储 Linux Shell
运维系列.Linux下的用户管理
运维系列.Linux下的用户管理
512 1
|
存储 机器学习/深度学习 测试技术
模型量化技术综述:揭示大型语言模型压缩的前沿技术
在这篇文章中,我将在语言建模的背景下介绍量化,并逐一探讨各个概念,探索各种方法论、用例以及量化背后的原理。
831 0
模型量化技术综述:揭示大型语言模型压缩的前沿技术
|
前端开发 JavaScript 程序员
12个适合后端程序员的前端框架
12个适合后端程序员的前端框架
1068 4
|
Java Linux 开发工具
Windows中使用包管理器(类似于apt/yum的) - Chocolatey
Windows中使用包管理器(类似于apt/yum的) - Chocolatey
1466 0
|
机器学习/深度学习 XML 移动开发
目标检测模型的评价标准-AP与mAP
目标检测模型的评价标准-AP与mAP
1202 0