首页 > 代码库 > 洛谷图论入门题--基本题必做 图-最短路径-1.信使(msner)

洛谷图论入门题--基本题必做 图-最短路径-1.信使(msner)

技术分享技术分享技术分享

技术分享
 1 //带病打代码的我,心好累,脑子更累。 看到此代码的请给点个赞 ,谢谢。  2 //这个题还是比较简单的,用弗洛伊德完全就能过; 3 /*由衷的感谢江山,帮忙看程序的错误 ,  4  5  ,--^----------,--------,-----,-------^--, 6   | |||||||||   `--------‘     |          O 7   `+---------------------------^----------| 8     `\_,-------, _________________________| 9       / XXXXXX /`|     /10      / XXXXXX /  `\   /11     / XXXXXX /\______(  12    / XXXXXX /13   / XXXXXX /             为山哥点赞! 14  (________(15   `------‘   16 */17 18 19 //洛谷炸了 20 #include<iostream>21 #include<cstring>22 #include<cmath>23 using namespace std;24 //第一次开了100*100的数组,结果炸了。 25 int f[5000][5000] , m , n , mmax = -1;26 int main(){27     cin>>n>>m;28     //初始化,随便一个较大的数本人喜好123456789 29      for(int i=1;i<=n;++i){30         for(int j=1;j<=n;++j){31             f[i][j]=123456789;32         }33     }34     for(int i = 1 ; i <= m ; i ++) {35         int x , y , z ;36         cin>>x>>y>>z;37         f[x][y] = z;38         f[y][x] = z;39     }40     //枚举每种情况并计算 41     for(int k = 1 ; k <= n ; k ++){42         for(int i = 1 ; i <= n ; i ++){43             for(int  j = 1 ; j <= n ; j ++){44                 if(f[i][j] > f[i][k] + f[k][j] &&45                     f[i][k] != 123456789 && f[k][j] != 5000){46                     f[i][j] = f[i][k] + f[k][j];47                 }48             }49         }50     }51     for(int j = 1 ; j <= n ; j ++){52         if(f[1][j] > mmax){53             mmax = f[1][j];    //寻找从1开始最小的一个 54         }55     }56     cout<<mmax;57     //结束 58 } 59 //再次感谢山哥 60 /*61        .__.      .==========.62      .(\\//).  .-[ for you! ]63     .(\\()//)./  ‘==========‘64 .----(\)\/(/)----.65 |     ///\\\     |66 |    ///||\\\    |67 |   //`||||`\\   |68 |      ||||      |69 |      ||||      |70 `------====------‘71 */
View Code

 

好吧,这篇博客就先写这么多,毕竟时间有限,同行们看到了这篇随笔的话可以顺便看一个这个友情链接   蒟蒻  http://mrmorning.coding.me/大佬给你们助阵!

 

洛谷图论入门题--基本题必做 图-最短路径-1.信使(msner)