首页 > 其他分享 >「最短路」农场派对

「最短路」农场派对

时间:2023-01-08 21:14:47浏览次数:33  
标签:派对 GCC int 短路 农场 pragma include optimize

本题为1月4日22寒假集训每日一题题解

题目来源:(未知)

题面

题目描述

N(1<=N<=1000)头牛要去参加一场在编号为x(1<=x<=N)的牛的农场举行的派对。有M(1<=M<=100000)条有向道路,每条路长 Ti(1<=Ti<=100);每头牛都必须参加完派对后回到家,每头牛都会选择最短路径。求这N头牛的最短路径(一个来回)中最长的一条的长度。

特别提醒:可能有权值不同的重边。

输入

第1行:

3个空格分开的整数N,M,X;

第2…M+1 行:
33 个空格分开的整数Ai,Bi,Ti,表示有一条从Ai到Bi的路,长度为Ti。

输出

一行一个数,表示最长最短路的长度。

样例输入

4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3

样例输出

10


思路分析

显然这是多源最短路问题,可以通过多次使用dijkstra算法解决.

不过此题的数据量是一个稠密图,我个人估了一下,虽然有点悬,但是或许可以使用写起来相对简单的Floyd算法,且Floyd算法本身就是用来解决多源最短路问题的.尝试了一下后发现,可以正好卡着时间界过去,所以就没有写dijkstra算法了.

参考代码

#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3, "Ofast", "inline")

#include <iostream>
#include <queue>
#include <cstring>

using namespace std;

int g[1010][1010]; // 邻接矩阵,用vector会TLE

int main()
{
    ios::sync_with_stdio(false);

    int n, m, x;
    cin >> n >> m >> x;

    memset(g, 0x3f, sizeof(g)); // 默认值设置为无穷大

    while (m--)
    {
        int a, b, t;
        cin >> a >> b >> t;
        g[a][b] = min(g[a][b], t);
    }

    for (int i = 1; i <= n; i++)
    {
        g[i][i] = 0; // 自己到自己的距离为0
    }

    // floyd算法
    for (int k = 1; k <= n; k++)
    {
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= n; j++)
            {
                g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
            }
        }
    }

    // 遍历每一个点,找最长的最短路
    int res = 0;
    for (int i = 1; i <= n; i++)
    {
        res = max(res, g[i][x] + g[x][i]);
    }

    cout << res << "\n";

    return 0;
}

"正是我们每天反复做的事情,最终造就了我们,优秀不是一种行为,而是一种习惯" ---亚里士多德

标签:派对,GCC,int,短路,农场,pragma,include,optimize
From: https://www.cnblogs.com/geministar/p/zstu22_1_4.html

相关文章

  • 最短路问题学习笔记
    之前对最短路的认识不是很充分,结合之前的博客来重新总结一下最短路的问题的解法。Floyd算法——小数据杀手相信最先接触的最短路算法就是Floyd算法了,因为他精简的代码实......
  • 算法之Dijkstra及其堆优化和SPFA:图上单源最短路径神器
    签到题……题目传送门SPFA算法本人曾经写过一篇有关Bellman-ford的博,但就算是挂了优化的ford也只能过这道题的弱化版。今天就先填个坑,先讲SPFA。在这里我直接认为你们......
  • hdu:最短路(堆优化的dijkstra)
    ProblemDescription在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现......
  • 蓝桥真题——最短路 & 门牌制作
    题目1最短路标签:填空题2019省赛如下图所示,G是一个无向图,其中蓝色边的长度是1、橘色边的长度是2、绿色边的长度是3。则从A到S的最短距离是多少?答案由图可......
  • 算法之Floyd-Warshall算法【c++】【图论】【最短路】
    我们作为刚学图论的小蒟蒻,先接触到的算法一定是图上最短路径算法。而最短路算法中最简单的当属Floyd-Warshall算法。下面是一些基本介绍:​该算法可以计算图上任意两点间......
  • 最短路
    T1P5318【深基18.例3】查找文献dfs和bfs用set存方便排序#include<bits/stdc++.h>usingnamespacestd;set<int>a[1000020];intv[1000020];intn,m;voiddfs(int......
  • 怎么搭建个人小型渲染农场?搭建渲染农场配置
    渲染农场是众多机器组成的渲染集群,通常用来渲染你的单帧效果图或动画项目,我们借助渲染农场的力量,可以满足3D项目交期时间迫在眉睫的需求,当你试着在自己的机器上渲染一个复......
  • 怎么搭建个人小型渲染农场?搭建渲染农场配置
    渲染农场是众多机器组成的渲染集群,通常用来渲染你的单帧效果图或动画项目,我们借助渲染农场的力量,可以满足3D项目交期时间迫在眉睫的需求,当你试着在自己的机器上渲染一个复杂......
  • BFS场景样例测试--最短路径--用Java实现
    我们今天研究下最短路径用BFS来实现 首先确定数据结构/***二叉树数据结构节点*/publicclassTreeNode{intvalue;TreeNodeleft;TreeNoder......
  • python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题|附代码数据
    最近我们被客户要求撰写关于MDP的研究报告,包括一些图形和统计输出。在强化学习中,我们有兴趣确定一种最大化获取奖励的策略。假设环境是马尔可夫决策过程(MDP)的理想模型,我们......