图结构练习——最短路径
来源:互联网 发布:华北水利水电大学知乎 编辑:程序博客网 时间:2024/06/05 08:45
题目描述
输入
输出
示例输入
3 21 2 11 3 11 0
示例输出
10
提示
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
typedef struct arcnode
{
int adj;
int info;
}arcnode,adjmatrix[101][101];
typedef struct
{
adjmatrix a;
int vn,an;
}MG;
struct node
{
int data;//存储结点;
int step;//最小的路径;
};
int i,j;
int create(MG &g,int n,int m)//邻接矩阵的建立;
{
int v1,v2,w;
g.vn=n;
g.an=m;
for(i=1;i<=g.vn;i++)
for(j=1;j<=g.vn;j++)
if(i==j)
g.a[i][j].adj=0;
else g.a[i][j].adj=INF;//规定不同两点间的距离为无穷大;
for(i=1;i<=g.an;i++)
{
scanf("%d%d%d",&v1,&v2,&w);
if(g.a[v1][v2].adj>w||g.a[v2][v1].adj>w)
g.a[v1][v2].adj=w; //有重复边选权值最小的保存
g.a[v2][v1]=g.a[v1][v2];
}
return 1;
}
void floyd(MG &g)//弗洛伊德算法(找两点间的最小路径);
{
int k;
for(k=1;k<=g.vn;k++)
for(i=1;i<=g.vn;i++)
for(j=1;j<=g.vn;j++)
if(i!=j)
{
if(g.a[i][j].adj>g.a[i][k].adj+g.a[k][j].adj)
g.a[i][j].adj=g.a[i][k].adj+g.a[k][j].adj;
}
}
int main()
{
MG g;
int m,n;
while(~scanf("%d%d",&n,&m))
{
create(g,n,m);
floyd(g);
printf("%d\n",g.a[1][n].adj);
}
return 0;
}
- SDUT2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径(sdut_2143)
- 图结构练习——最短路径
- SDUT 2143 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- SDUTACM 图结构练习——最短路径
- 图结构练习——最短路径
- 图结构练习——最短路径
- SDUT2143图结构练习——最短路径
- 谈谈我对攻读计算机研究生的看法
- 1021. Deepest Root (25)-PAT甲级真题(图的遍历,dfs,连通分量的个数)
- CodeForces 597A Divisibility
- python 学习(十五)之 字典
- CSS3学习
- 图结构练习——最短路径
- lightoj 1045 - Digits of Factorial (数学-log运用--阶乘进制位数)
- poj 1905 Expanding Rods
- 【编程语言】Spark 下载及安装教程 CentOS 7
- poj Shortest Prefixes Babelfish 字典树的学习
- LeetCode(387)First Unique Character in a String
- Android TextView(一)——常用属性简介
- [转]ACM 取石子问题
- 创建博客-用户资料