题目描述

 给定一个带权无向图,求节点1到节点n的最短路径。

 

输入

 输入包含多组数据,格式如下。

第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)
剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。
 

输出

 每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在)

 

示例输入

3 2
1 2 1
1 3 1
1 0

示例输出

1
0

提示

#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;
}

图结构练习——最短路径相关推荐

  1. oj 2143 图结构练习——最短路径的几种算法

    图结构练习--最短路径 Description 给定一个带权无向图,求节点1到节点n的最短路径. Input 输入包含多组数据,格式如下. 第一行包括两个整数n m,代表节点个数和边的个数.(n< ...

  2. 图结构练习——最短路径 (Dijkstra算法版)

    Dijkstra算法 定义:迪克斯特拉算法,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访 ...

  3. 矩阵和图结构(图论) 最短路径问题 学习笔记

    矩阵和图是可以相互转换的,这里的图不仅仅是图片,还包括图结构(图论) 所以最短路径问题解决矩阵和结局图论均是一个问题.

  4. Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子

    目录目录 一.前言 二.模拟校园地图描述 三.分析题目及相关绘图 四.代码部分 1.GraphNode类 2.Menu类(管理文字) 3.Attraction类 4.AttractionGraph类( ...

  5. ICML2020 | 神经网络的图结构如何影响其预测性能?

    作者 | 董靖鑫 审稿 | 程玉 今天给大家介绍的是来自斯坦福大学的Jure Leskovec课题组发表在ICML2020上的文章" Graph Structure of Neural Ne ...

  6. 【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式

    例: 求出距离顶点v0的最短路径长度为最长的一个顶点,并要求尽可能节省时间 分析: 用bfs算法(利用bfs算法的层次特性): 从v0出发进行广度遍历时, 最后一层的顶点距离v0的最短路径长度最长.因 ...

  7. 数据结构(C++)——图:基于邻接矩阵实现的图结构

    抽象数据类型 操作接口:图支持的操作接口分为边和顶点两类 Graph模板类 typedef enum { UNDISCOVERED, DISCOVERED, VISITED } VStatus; // ...

  8. python地铁查询系统_基于图结构实现地铁乘坐线路查询

    基于图结构实现地铁乘坐线路查询 github-python算法和flaskapp部分:repo github-android部分:repo flaskapp接口文档:传送门 深度了解Dijkstra优 ...

  9. 基于图结构实现地铁乘坐线路查询

    基于图结构实现地铁乘坐线路查询 github-python算法和flaskapp部分:repo github-android部分:repo flaskapp接口文档:传送门 深度了解Dijkstra优 ...

最新文章

  1. 当最懂 5G 的中国移动遇见云,移动云专题赛正式启动!
  2. no copy constructor available or copy constructor is declared #39;explicit#39;
  3. pandas isnull 函数
  4. Matlab:成功解决Undefined function or variable B
  5. 控制好你的 Wordpress 侧边栏
  6. C++——多态实现原理分析
  7. web前端超出两行用省略号表示
  8. C/C++ 指针和数组
  9. 虚拟专题:知识图谱 | 事件图谱的构建、推理与应用
  10. 手把手教你如何在安卓平台上实现打电话发短信的功能
  11. 如何创建和使用自引用层次结构表
  12. javascript KeyboardEvent
  13. ssis导入xml_SSIS XML目标
  14. 通过DBLINK跨数据库查询,同步创建表结构,插入表数据
  15. Fiddler抓包【3】_设置断点修改
  16. 硬盘提示设备未就绪要如何办啊
  17. 学位论文和论文的区别是什么?
  18. SQL -- 判断字段值是否为空,假如是空的话,就赋值为0,假如不为空,则赋值就为1
  19. acwing 846. 树的重心
  20. php.ino,北京大学POMINO v2 NO2卫星产品发布

热门文章

  1. android jni 调用java_Android 基于NDK的JNI开发 C调用java和java调用C
  2. python创建文件夹用什么函数_Python——os.mkdir()在指定路径下创建文件夹 + 路径的连接理解...
  3. html5 css3浏览器,五大主流浏览器CSS3和HTML5兼容性大比拼
  4. qsub 指定节点_PBS,QSUB常用命令
  5. 滤波器的优点_声光可调谐滤波器
  6. webservice 服务器无法处理请求_Message Queue与WebService比较
  7. idea修改代码后不重启项目_使用DevTool实现SpringBoot项目热部署
  8. 非顺序控制结构的c语言语法是怎样的,流程控制语句:顺序结构和选择结构
  9. spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍
  10. gta5显示nat较为严格_为何严格治理下雾霾天仍频发?哈尔滨市环保局解答重污染天3大疑问...