zoukankan      html  css  js  c++  java
  • 图结构练习——最短路径(floyd算法(弗洛伊德))

    图结构练习——最短路径

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

     给定一个带权无向图,求节点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
    代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 #define max 65535
     4 int weight[101][101];
     5 int main()
     6 {
     7     int m,n;
     8     while(scanf("%d%d",&m,&n)!=EOF)
     9     {
    10         int i,j;
    11         int k,u,v,w;
    12         for(i=1;i<=m;i++)//初始化邻接矩阵
    13         {
    14             for(j=1;j<=m;j++)
    15             weight[i][j]=max;
    16             weight[i][i]=0;
    17         }
    18         for(i=1;i<=n;i++)
    19         {
    20             scanf("%d%d%d",&u,&v,&w);
    21             if(weight[u][v]>w)//去重,取最小值
    22             {
    23                 weight[u][v]=w;
    24                 weight[v][u]=w;
    25             }
    26         }
    27         //以下是核心算法语句
    28         for(k=1;k<=m;k++)
    29         for(i=1;i<=m;i++)
    30         for(j=1;j<=m;j++)
    31         {
    32             if(weight[i][j]>(weight[i][k]+weight[k][j]))
    33             {
    34                 weight[i][j]=weight[i][k]+weight[k][j];
    35             }
    36         }
    37         printf("%d
    ",weight[1][m]);
    38     }
    39     return 0;
    40 }
    View Code


  • 相关阅读:
    kettle Switch / Case Verification fails on working Tranfsormation
    KETTLE 并行任务设置
    查看ORACLE各表空间使用情况
    KETTLE使用小记
    ORACLE IMP三种模式
    倒腾ORACLE小记
    KETTLE xls表格导入
    绕点旋转(老问题)
    TransformToolControl.as
    钻石恒久远,一颗永流传
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3247290.html
Copyright © 2011-2022 走看看