hdu 2544最短路 Floyd算法
最短路
Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
输入保证至少存在1条商店到赛场的路线。
#include<stdio.h>
#include<string.h>
#define inf 999999
int main()
{int d[105],len[105][105],vis[105];int i,j,k,a,b,c,n,m;while(scanf("%d%d",&n,&m)&&m!=0&&n!=0){for(i=1;i<=n;i++)for(j=1;j<=n;j++)len[i][j]=len[j][i]=inf; //初始任意两点的距离为inffor(i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);len[a][b]=c;len[b][a]=c; //a->b和b->a的距离都为c}for(i=2;i<=n;i++)d[i]=len[1][i]; //d[i]表示从1到i点要走的距离memset(vis,0,sizeof(vis)); //初始化刚开始都未访问过vis[1]=1; //从1开始查找 int min;k=1;for(i=1;i<n;i++){min=inf;for(j=1;j<=n;j++){if(d[j]<min&&(!vis[j])) //如果j点未访问,且1到j的距离比min小{min=d[j]; k=j;}}vis[k]=1; //从到1距离最短的点查找for(j=1;j<=n;j++){if(!vis[j]&&d[j]>d[k]+len[k][j])//增加新的结点d[j]=d[k]+len[k][j];}}printf("%d\n",d[n]);}return 0;
}
#include<stdio.h>
#define INF 1<<25
const int N = 120;
int d[N][N];void read_graph(int n, int m)
{int u, v, w, i, j;for(i = 1; i <= n; i++)for(j = 1; j <= n; j++){if(i == j)d[i][j] = 0;elsed[i][j] = INF;}for(i = 0; i < m; i++){scanf("%d%d%d",&u, &v, &w);d[u][v] = d[v][u] = w;}
}void Floyd(int n)
{for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)if(d[i][k] < INF && d[k][j] < INF)if(d[i][j] > d[i][k] + d[k][j])d[i][j] = d[i][k] + d[k][j];
}int main()
{int n, m;while(~scanf("%d%d",&n,&m)){if(n == 0 && m == 0) break;read_graph(n, m);Floyd(n);printf("%d\n",d[1][n]);}return 0;
}
hdu 2544最短路 Floyd算法相关推荐
- hdu 2544 最短路 Dijkstra算法
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Desc ...
- HDU 2544 最短路(各种最短路算法的实现)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目: Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂 ...
- 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数
链接:https://www.nowcoder.com/questionTerminal/a29d0b5eb46b4b90bfa22aa98cf5ff17 来源:牛客网 最短路径 热度指数:2992 ...
- 图论 —— 最短路 —— Floyd 算法
[概述] Floyd 算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法. 其最大特点是可以计算出现负边权时的最短路,实际应用中,很多题目不是问如何用 Floyd 求最短路,而是用 ...
- HDU 2544 最短路 最短路入门
点击打开链接 最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 最短路——floyd算法
1. Floyd算法的介绍 算法的特点: 弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包.Fl ...
- 任意两点最短路floyd算法matlab,多源最短路——Floyd算法
Floyd算法 问题的提出:已知一个有向网(或者无向网),对每一对定点vi!=vj,要求求出vi与vj之间的最短路径和最短路径的长度. 解决该问题有以下两种方法: (1)轮流以每一个定点为源点,重复执 ...
- HDU 2544 最短路(最短路入门)
链接:click here 题意: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找 ...
- hdu 2544 最短路 (dijkstra)
http://acm.hdu.edu.cn/showproblem.php?pid=2544 最简单的最短路了吧 改天试试优化版本的 #include<stdio.h> #include& ...
最新文章
- c++ primer,友元函数上的一个例子(By Sybase)
- 由c#的值类型与引用类型说开去
- minijson使用_java layuimini使用json传值
- 学成在线--19.新增课程(数据字典)
- Linux下安装配置Nexus
- Linux应用程序和驱动程序如何完成交互,应用程序和驱动的简易交互方式的实现...
- 将图片变换成3d对象
- SeDebugPrivilege
- 基于SpringBoot的图书管理系统
- Python使用Hprose
- 【2021LaTeX模板分享】数学建模竞赛国赛
- 浅析数据中心存储发展趋势
- 月入2万的10个小生意项目
- 杀戮间插件入坑指南(UT2004)
- 微信小程序+.NET(十一) 小程序之小说阅读器实现
- Tech.ED North America 2008 Launch! (June 10-13,2008)
- 解决VM虚拟机导致硬盘灯常亮,很卡的问题 解决VM虚拟机导致硬盘灯常亮,很卡的问题
- matlab中输入数学字母,Matlab希腊字母和数学符号
- ACM-ICPC 2018沈阳赛区网络预选赛
- [SSD固态硬盘技术 7] 主控核心设计