洛谷图论入门题--基本题必做 图-最短路径-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/大佬给你们助阵!

时间: 2024-10-13 06:15:58

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

洛谷P3381——费用流模板题

嗯..随便刷了一道费用流的模板题....来练练手. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int h[5210],d[5210],used[5210],que[100010],last[5210]; int k=1,INF=0x7fffffff,ans1=0,ans2=0; inline int read(){ int t=1,num=0; char c=ge

洛谷 P3709 大爷的字符串题

https://www.luogu.org/problem/show?pid=3709 题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区间中随机拿出一个字符x,然后把x从这个区间中删除,你要维护一个集合S 如果S为空,你rp减1 如果S中有一个元素不小于x,则你rp减1,清空S 之后将x插入S 由于你是大爷,平时做过的题考试都会考到,所以每次询问

l洛谷 P3926 SAC E#1 - 一道不可做题 Jelly

P3926 SAC E#1 - 一道不可做题 Jelly 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一天,他们在一起搓炉石,而SOL菌则要拿出蒟蒻果冻招待他的客人. 蒟蒻果冻一般在a度下保存在冰箱里.但是刚拿出来的时候太冰了,需要加热.SOL菌打算用一种神奇的电炉加热蒟蒻果冻.根据观察,它有一个特点: 1.蒟蒻果冻小于c度的时候,每p单位时间加热1单位温度: 2.当蒟蒻果冻等于c度的时候,需要q单位

洛谷2766:[网络流24题]最长不下降子序列问题——题解

https://www.luogu.org/problemnew/show/P2766 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列. (3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的不下降子序列. 第一问用dp求解不多说了. 考虑第二问,每个数只用一次很好办,把数拆点(入点和出点)中间连边权为1的边即可. 现在的问题就是如何让它能够跑满s个点. 我们设dp[i

【刷题】洛谷 P3676 小清新数据结构题

题目背景 本题时限2s,内存限制256M 题目描述 在很久很久以前,有一棵n个点的树,每个点有一个点权. 现在有q次操作,每次操作是修改一个点的点权或指定一个点,询问以这个点为根时每棵子树点权和的平方和. (题目不是很好懂,没看太懂的可以看看样例解释) 输入输出格式 输入格式: 第一行两个整数n.q. 接下来n-1行每行两个整数a和b,表示树中a与b之间有一条边,保证给出的边不会重复. 接下来一行n个整数,第i个整数表示第i个点的点权. 接下来q行每行两或三个数,如果第一个数为1,那么接下来有两

洛谷 P1683 入门

P1683 入门 题目描述 不是任何人都可以进入桃花岛的,黄药师最讨厌象郭靖一样呆头呆脑的人.所以,他在桃花岛的唯一入口处修了一条小路,这条小路全部用正方形瓷砖铺设而成.有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒气,那你就死翘翘了,我们认为是不安全的.你只能从一块安全的瓷砖上走到与他相邻的四块瓷砖中的任何一个上,但它也必须是安全的才行. 由于你是黄蓉的朋友,她事先告诉你哪些砖是安全的.哪些砖是不安全的,并且她会指引你飞到第1块砖上(第1块砖可能在任意安全位置),现在她

洛谷 P2783 有机化学之神偶尔会做作弊

题目背景 LS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. “第1354题怎么做”<--手语 他问道. 题目描述 你翻到那一题:给定一个烃,只含有单键(给初中生的一个理解性解释:就是一堆碳用横线连起来,横线都是单条的). 然后炎魔之王拉格纳罗斯用他的火焰净化了一切环(???).所有的环状碳都变成了一个碳.如图所示. 然后指定多组碳,求出它们之间总共有多少碳.如图所示(和上图没有关系). 但是因为在考试,

[洛谷P2580]于是他错误的点名开始了

洛谷P2580的一个水题,用啥都能过,不过为了联系一下刚刚学会的字典树,还是认真做一下吧. #include <cstdio> #include <cstring> using namespace std; #define idx(x) x - 'a' int n, m, nex; struct node { int next[26]; int val; }tree[1000001]; void Insert(char *s) { int i, rt = 0, len = strl

【C++】最近公共祖先LCA(Tarjan离线算法)&amp;&amp; 洛谷P3379LCA模板

1.前言 首先我们介绍的算法是LCA问题中的离线算法-Tarjan算法,该算法采用DFS+并查集,再看此算法之前首先你得知道并查集(尽管我相信你如果知道这个的话肯定是知道并查集的),Tarjan算法的优点在于相对稳定,时间复杂度也比较居中,也很容易理解(个人认为). 2.思想 下面详细介绍一下Tarjan算法的思想: 1.任选一个点为根节点,从根节点开始. 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过. 3.若是v还有子节点,返回2,否则下一步. 4.合并v到u上. 5.寻找与当前点