OJ2143图结构练习——最短路径(迪杰斯特拉算法)
来源:互联网 发布:c3p0连接池配置优化 编辑:程序博客网 时间:2024/05/01 15:23
图结构练习——最短路径
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个带权无向图,求节点1到节点n的最短路径。
输入
输入包含多组数据,格式如下。
第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)
剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。
输出
每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在)
示例输入
3 21 2 11 3 11 0
示例输出
10
提示
边与边的权值也要取最小值,切记切记,不然就不对
来源
赵利强
示例程序
#include<stdio.h>#include<stdlib.h>#include<string.h>#define INF 999999999int p[105][105],vis[105],dis[105];int n;void Dijkstra(int e){ int i,min,c,v,j,u; for(i=1; i<=n-1; i++) { min=INF; for(j=1; j<=n; j++) { if(vis[j]==0&&dis[j]<min) { min=dis[j]; u=j; } } vis[u]=1; for(v=1; v<=n; v++) { if(p[u][v]<INF) { if(dis[v]>dis[u]+p[u][v]) dis[v]=dis[u]+p[u][v]; } } } printf("%d\n",dis[n]);}int main(){ int i,j,k,l,m,a,b,c; while(~scanf("%d%d",&n,&m)) { memset(vis,0,sizeof(vis)); for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(i==j) p[i][j]=0; else p[i][j]=INF; while(m--) { scanf("%d%d%d",&a,&b,&c); if(p[a][b]>c)<span style="font-family: 微软雅黑, 黑体, 宋体, Verdana, Helvetica, Arial, Geneva, sans-serif;">//判断是不是两点之间的最小权值</span> { p[a][b]=c; p[b][a]=c; } } vis[1]=1; for(i=1; i<=n; i++)//初始dis数组 dis[i]=p[1][i]; Dijkstra(1); }}
0 0
- OJ2143图结构练习——最短路径(迪杰斯特拉算法)
- sdut oj2143 图结构练习——最短路径
- 图结构练习——最短路径 dijkstra算法
- 【2143】图结构练习——最短路径 (Dijkstra算法)(SDUT)
- 图结构练习——最短路径 (Floyd算法)
- 图结构练习——最短路径(Dijkstra算法)
- 图结构练习——最短路径(Dijkstra算法)
- 图结构练习——最短路径(Floyd算法)
- 图结构练习——最短路径(dijkstra算法)
- 最短路径前两种算法实现 例题 sdut oj2143
- SDUT2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径(sdut_2143)
- Java导入、导出Excel(二)
- IntelliJ IDEA and Scala tutorial
- 数据库删除语句 Drop/Delete/Truncate比较
- 对于查询按钮不满足条件不能查询不能提交的验证
- OkHttp GET 和 POST 的使用
- OJ2143图结构练习——最短路径(迪杰斯特拉算法)
- Level 0 DOM
- Andorid中如果在TextView中用drawable添加图片,怎么能改变图片与文字的距离
- androidstudio配置
- java名词解释
- LeetCode--No.234--Palindrome Linked List
- 世界经济论坛报告:区块链将占据全球金融系统核心地位
- 双谷人才财务管理(2)
- Java 增强型的for循环 for each