首页 > 代码库 > 洛谷图论入门题--基本题必做 图-最短路径-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 */
好吧,这篇博客就先写这么多,毕竟时间有限,同行们看到了这篇随笔的话可以顺便看一个这个友情链接 蒟蒻 http://mrmorning.coding.me/大佬给你们助阵!
洛谷图论入门题--基本题必做 图-最短路径-1.信使(msner)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。