最短路练习
来源:互联网 发布:印度美食 知乎 编辑:程序博客网 时间:2024/05/16 09:01
学完最短路后,首次练习,做的这道题目:
输入包括多组数据。每组数据第一行是两个整数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条商店到赛场的路线。
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间。
这道题算是简单题,直接套用模板就可以啦。。
#include <cstdio>#include <iostream>#include <cstring>#define MAXN 1000000000using namespace std;int a[105][105], d[105], p[105];void spath(int v0, int n){ int v, w, k, minn; int vis[105]; for(v=1; v<=n; v++) { vis[v] = 0; d[v]=a[v0][v]; p[v]=0; } d[v0]=0; vis[v0]=1; for(v=1; v<n; v++) { minn = MAXN; for(w=1; w<=n; w++) { if(!vis[w]&&d[w]<minn) { k=w; minn=d[w]; } } vis[k]=1; for(w=1; w<=n; w++) { if(!vis[w]&&(minn+a[k][w]<d[w])) { d[w]=minn+a[k][w]; p[w]=k; } } }}int main(){ int n, m, A, B, C; while(cin >> n >> m) { memset(a, 0, sizeof(a)); if(n==0&&m==0) break; for(int i=1; i<=m; i++) { cin >> A >> B >> C; a[A][B]=C; a[B][A]=C; } for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(!a[i][j]) a[i][j]=MAXN; spath(1, n); cout << d[n] << endl; } return 0;}
1 0
- 最短路练习
- hdu 1874 最短路练习
- 最短路入门练习 解题报告
- 蓝桥杯练习系统 ALGO-5 最短路
- POJ2502 Subway -DIJKSTRA最短路练习
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- 2016夏季练习——最短路
- 2016夏季练习——最短路
- 2016夏季练习——最短路
- 2016夏季练习——最短路
- 2016夏季练习——最短路
- 编程练习7(最短路)
- Tram (最短路练习模板题)
- 基础最短路练习 一 POJ 2387
- 蓝桥杯算法练习最短路(spfa)
- 最短路练习2/poj/2253/Frogger
- kuangbin 最短路练习 A题
- [练习][洛谷1186]最短路 玛丽卡
- Android 窗口小部件--APP Widget
- pcduino 3 nano
- ScrollView常用属性及代理方法
- 测试工具类
- c++第三次上机-2
- 最短路练习
- easyui的validatebox校验
- HDOJ 2026 首字母变大写
- 已知与未知
- R语言︱用excel VBA把xlsx批量转化为csv格式
- Linux内核分析7:Linux内核装载和启动一个可执行程序的分析
- leetcode(一)—— Two Sum(Python/C++)
- [转]Android ANR 分析解决方法
- Git中的AutoCRLF与SafeCRLF换行符问题