zoukankan      html  css  js  c++  java
  • 50148155HYF旅游

    试题描述
    放假了,我们的HYF(邹忌)同学准备去一些城市旅游,有些城市有公路,有些则没有。为了节省经费以及方便计划旅程,邹忌希望在出发前知道任意两个城市之间的最短路。
    输入
    第一行,包含一个正整数n,表示有n个城市。接下来n行,每行有n个数,一个n*n的矩阵mat,其中mat[i][j]表示城市i到城市j的距离。若mat[i][j]=-1,表示城市i与j没有公路
    输出
    n行,每行有n个数,一个n*n的矩阵mat,其中mat[i][j]表示城市i到城市j的最短距离。
    输入示例
    4
    0 2 6 4
    -1 0 3 -1
    7 -1 0 1
    5 -1 12 0
    输出示例
    0 2 5 4
    9 0 3 4
    6 8 0 1
    5 7 10 0
    其他说明
    n<=200
     

    最最经典的Floyd例题。最短路径中比较好理解的一种,就是时间复杂度较高。

    适用于多源最短路(多个起点)

     1 //Floyd 
     2 #include <iostream>
     3 
     4 using namespace std;
     5 int mat[201][201];
     6 int main()
     7 {
     8     int n;
     9     scanf("%d",&n);
    10     for(int i=1;i<=n;i++)
    11         for(int j=1;j<=n;j++)
    12         {
    13             scanf("%d",&mat[i][j]);
    14             if(mat[i][j]==-1) mat[i][j]=99999999;   //正无穷,具体大小因题而异(也别太大,注意两个相加后爆掉,变成负数) 
    15         }
    16     for(int k=1;k<=n;k++)
    17         for(int i=1;i<=n;i++)
    18             for(int j=1;j<=n;j++) mat[i][j]=min(mat[i][j],mat[i][k]+mat[k][j]); 
    19     for(int i=1;i<=n;i++)
    20     {
    21         for(int j=1;j<=n;j++)
    22         {
    23             if(j==1) printf("%d",mat[i][j]);
    24             else printf(" %d",mat[i][j]);
    25         }
    26         printf("
    ");
    27     }
    28     //system("pause");
    29     return 0;
    30 }
    50148155HYF旅游
  • 相关阅读:
    iOS: ARC和非ARC下使用Block属性的问题
    HTTP POST GET 本质区别详解
    php输出json,需要嵌套数组和对象问题
    正则验证在线生成代码
    笔记
    按钮删除
    sudo dpkg-reconfigure phpmyadmin命令,重新配置一遍phpmyadmin
    Ubuntu 16.04 安装 Apache, MySQL, PHP7
    ubuntu18.04安装chrome浏览器
    初三知识点
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/5714668.html
Copyright © 2011-2022 走看看