POJ 3268 Silver Cow Party (Dijkstra算法)

【代码超详解】POJ 3268 Silver Cow Party(Dijkstra 算法 + 思维) 一、题目描述 二、算法分析说明与代码编写指导 每头牛都会到点 x 参加聚会,然后返回。但路是单向的,因此回去的路可能与来的路不同。 如果对每个点都跑一次 Dijkstra,或者直接跑一次 Floyd 算法,由于复杂度达到 O(n^3),在本题的数据规模下会超时。 从 x 回去的最短路可以直接套 Dijkstra 算法求解单源最短路径。从各点来到 x 的最短路径也只需要跑一次 Dijkstra 就... 阅读详情

题目链接:https://vjudge.net/problem/POJ-3268


大意:给你个有向图,再给你个点,求图中某个点i到该点的最短路与该点到点i的最短路的和的最大值。

思路:求一个点到其他所有点的最短距离,这很简单,就是单源最短路问题。若是求其他所有点到某个点的最短距离呢,难道还要对每个点调用一次Dijkstra吗,当然没有必要。不难发现,这个过程就是单元最短路的逆过程。我们可以再逆向建图,把图中所有边反向,建立一张新的图,这样原先的求其他所有点到某点的距离就变成了某点到其他点的最短距离。用两次Dijkstra即可解决此题。


#include<cstdio>
#include<queue>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1000 + 10;
const int INF = 1e9 + 10;
struct Edge
{
    int from, to, cost;
    Edge(int u, int v, int d) : from(u), to(v), cost(d) {}
};
struct HeapNode
{
    int u, d;
    HeapNode(int d, int u) : u(u),d(d){}
    bool operator < (const HeapNode& rhs) const {
        return d > rhs.d;
    }
};
struct Dijkstra
{
    int n, m;
    vector<Edge> edges;
    vector<int> G[maxn];
    int d[maxn];
    int done[maxn];

    void init(int n) {
       this->n = n;
       for(int i = 0; i < n; i++) G[i].clear();
       edges.clear();
    }

    void AddEdge(int from, int to, int cost) {
        edges.push_back(Edge(from, to, cost));
        m = edges.size();
        G[from].push_back(m-1);
    }

    void dijkstra(int s) {
       priority_queue<HeapNode> Q;
       for(int i = 0; i < n; i++) d[i] = INF;
       d[s] = 0;
       memset(done, 0, sizeof done);
       Q.push(HeapNode(0, s));
       while(!Q.empty()) {
          HeapNode x = Q.top(); Q.pop();
          int u = x.u;
          if(done[u]) continue;
          done[u] = 1;
          for(int i = 0; i < G[u].size(); i++) {
              Edge& e = edges[G[u][i]];
              if(d[e.to] > d[u] + e.cost) {
                 d[e.to] = d[u] + e.cost;
                 Q.push(HeapNode(d[e.to], e.to));
              }
          }
       }
    }
};

Dijkstra my1, my2;

int main()
{
    int n, m, x;
    scanf("%d%d%d", &n, &m, &x);
    my1.init(n); my2.init(n);
    while(m--) {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        my1.AddEdge(a-1, b-1, c);
        my2.AddEdge(b-1, a-1, c);
    }
    my1.dijkstra(x-1);
    my2.dijkstra(x-1);
    int mx = -1;
    for(int i = 0; i < n; i++) {
        mx = max(my1.d[i]+my2.d[i], mx);
    }
    printf("%d\n", mx);
    return 0;
}



从零构建:Trinamic API在STM32上的深度移植与TMC-IDE通信实战 本文详细介绍了如何从零开始在STM32平台上深度移植Trinamic API,并实现与TMC-IDE工具的稳定通信。内容涵盖SPI底层驱动定制、寄存器配置、高级功能实现及调试技巧,重点解析了TMC5160芯片的集成实践,帮助开发者构建可靠的嵌入式运动控制系统。 阅读详情

相关推荐

NCCL使用指南-进阶篇

前文介绍了NCCL的常用环境变量,本文介绍了NCCL-test性能基准测试,以及一些大规模集群测试的经验数据。

father_yingying的博客 1407

poj 3268(Dijkstra+有向图的处理)

Silver Cow Party POJ - 3268 题目的大意是说在2号点有一个party,所有其他点的牛都要去,同时也要回来,求在所有的牛来回的最短时间内最大值是多少。一开始我是用了最容易想到的方法,从其他点到x点,再从x点到其他点这样一次次的遍历一遍,想想都成三层for循环了,结果肯定就是TLE》==《了,用了邻接表,同样TLE,没办法看了一下题解,原来很简单,将图倒过来记一次,正着记一次...

c___c18的博客 567

深度学习CV八股文

深度学习CV八股文一、深度学习中解决过拟合方法L1和L2正则化DropoutDropout正则化Inverted Dropout(反向随机失活)Dropout起到正则化效果的原因:Dropout的缺点eargstopping ( 早停法 )二、深度学习中解决欠拟合方法三、梯度消失和梯度爆炸解决梯度消失的方法解决梯度爆炸的方法四、神经网络权重初始化方法Xavier指数加权移动平均数五、梯度下降法梯度下降SGD(随机梯度下降法)Momentum(动量梯度下降)Nesterov Momentum自适应学习率算法A

填坑 2万+

【算法每日一练]-图论 篇3(最短路) 营救 ,POJ3268 ,传送门 ,负环判断 ,灾后重建

今天将最短路

m0_69478376的博客 533

科研软件|Adobe Photoshop 2024 (PS 2024)

科研软件|Adobe Photoshop 2024 (PS 2024)

m0_55499682的博客 5513

STM32 SPI驱动TFT LCD实战:时序配置与硬件协同

SPI(串行外设接口)是一种高速、全双工、同步串行通信协议,广泛应用于微控制器与显示模组等外设的数据交互。其核心依赖时钟极性(CPOL)与时钟相位(CPHA)组合定义的四种工作模式,直接影响数据采样可靠性;而片选(NSS)与MOSI/SCLK等信号的硬件映射,则决定了多设备共总线下的通信稳定性。在TFT LCD驱动场景中,SPI凭借低开销、高吞吐优势成为主流选择,尤其适配ST7789、ILI9341等集成显示控制器的模块。本文聚焦STM32L系列MCU通过SPI2驱动1.3寸LCD的完整链路,涵盖Mode

php55的博客 1209

POJ3268 最短路

题目链接:http://poj.org/problem?id=3268 题意:奶牛派对:有分别来自 N 个农场的 N 头牛去农场 X 开party,农场间由 M 条有向路径连接。每头牛一来一回都挑最短的路走,求它们走的路的最大长度? 规模:1 ≤ N ≤ 1000,1 ≤ M ≤ 100,000,1 ≤ Ti ≤ 100(路径长度) 类型:最短路 分析: 乍一看是一个Floyd-Warsh

spring_3_shine的博客 436

低功耗和UPF介绍

参考[UPF]低功耗(Low Power Design)and UPF介紹

青春易逝,愿不负昭华,期待梦与远方 1万+

poj 3268 dijkstra

题意:     n个点,m条边,终点为x,问从某点到x,再回来,最大权值和为多少。 题解:    正图一次从x点开始的dijkstra,再来个反图,从x点开始的dijkstra。把两个dist数组加和找最大。 #include #define MX 111111111 int map[1010][1010],mapcopy[1010][1010],dist1[1010],dis

孩子 要努力啊 401

matlab处理las点云(1)——las/laz格式解析【2024最新版】

matlab中的las/laz格式解析。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 8460

SAP BOM反查(可追溯值至顶级)

功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。 *&---------------------------------------------------------------------* *& Report ZBOM_CHECK *&---------------------...

SAP阿狸 6061

基础最短路四 POJ3268

  POJ 3268 :http://poj.org/problem?id=3268 n为1000,m为100000 题目大意: 有很多牛分别从点X出发,到达各点,并返回回点X,问这些牛中经过的的最短路中,最大的最短路为多少。      其实就是以X为起点的最短路,然后将边反转方向一下,再求一次最短路。    两次和相加起来,扫一遍得到最大最短路。。。。       用pos保存了...

Hide_in_Code 642

STM32F407+OV2640的DCMI+DMA双缓冲JPEG图像采集系统

在嵌入式视觉系统中,数字摄像头接口(DCMI)是MCU连接CMOS图像传感器的关键硬件通道,其与DMA协同实现零CPU干预的高速数据流采集;而JPEG作为一种基于DCT变换与量化压缩的有损图像格式,依赖传感器端硬件编码引擎才能满足实时性要求。理解DCMI三重同步时序(PCLK/HSYNC/VSYNC)与DMA双缓冲机制的流水线协作原理,是突破带宽瓶颈、避免FIFO溢出和帧丢失的技术基础。该架构广泛应用于智能硬件、工业检测与边缘AI前端等需低功耗、高可靠图像捕获的场景,本文以OV2640与STM32F407为

weixin_42103128的博客 156

POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。

POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A tota...

261

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Dijkstra算法:POJ No 3268 Silver Cow Party

Dijkstra算法:POJ No 3268 Silver Cow Party 题目:http://poj.org/problem?id=3268 题解:使用 priority_queue队列对dijkstra算法进行优化 #include <iostream> #include <algorithm> #inc...

豆子 209

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

POJ 3268 Silver Cow Party dijkstra算法变种

题目链接 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1…N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirect...

RPG_Zero的博客 226

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ - 3268(Silver Cow Party)最短路 dijkstra算法

题目链接:http://poj.org/problem?id=3268 这道题的主要意思是有1-n头牛分别来自1-n号农场,农场之间有一些路,且都是单向的。现全部牛要到x号农场开party,开完后还要回到各自的农场,每一头牛都会选择最短时间的路来走,问这些牛中走的最长的时间。 思路:先求出每头牛到x农场的最短时间,再求每头牛返回各自农场的最短时间,两者相加取最大即可。而难点就在于怎么求最短时间,这...

Zoran的博客 339

POJ 3268-Silver Cow Party(dijkstra算法)

题目大意:给出一个单向带权图和一个点s,求点u,u到s的最短路径和s到u的最短路径之和最大。 先求一次dijkstra,然后把所有的边反向,权值不变,再求一次dijkstra,将两者加起来求最大的值就是所求的答案。 #include #include #include #include using namespace std; const int maxn=1010; cons

dilemma的专栏 908

POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)

题目链接: https://vjudge.net/problem/POJ-3268 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A to...

aisebu7819的博客 188

POJ 3268 Silver Cow Party(双向最短路)

Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤

nudt_oys的博客 628

POJ 3268 Silver Cow Party

POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1…N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ...

旺崽的博客 975

POJ 3268 Silver Cow Party(最短路径dijkstra算法)

题目大意: 有限输入的数据N,M,X。N表示有N个农场,每个农场有一头奶牛;M表示连接这N个农场的M条边(有向边),X表示农场的一个编号(1,2,...,n)。 现在每个农场的牛都要走到编号为X的农场上去(选择最短路走),并返回自己的农场(选择最短路走),要求输出这些n头牛走的路程中(去+回的路程和)的最大值。 解题思路: 一个很简单的最短路径问题,用两次dijkstra算法就可以了,

Learning By Doing 917

poj3268 Silver Cow Party 单源最短路径dijkstra算法

其他牛先从自己家走到x牛家,再从x牛家走回自己家,问这些牛走的最长路。开始我幼稚的遍历了每个点做dijkstra,不出意外TLE了。其实一头牛经过一段路到了x,我们只需要将所有有向路反向,再从x找其他点的最短路,就是其他点到x的最短路。 #include #include #include #include #include #include #include #include #inclu

她山之石,决不自弃 612

POJ3268 Silver Cow Party【Dijkstra算法+思维】

Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30185   Accepted: 13703 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1....

逐梦者 397

D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)

题目: 编号为1…N的N个农场中的每一个(1≤N≤1000)的一头奶牛将参加在#X农场(1≤X≤N)举行的大型奶牛聚会。总共M(1≤M≤100,000)单向(单向道路连接成对的农场;道路i需要Ti(1≤Ti≤100)单位时间来遍历。每头奶牛都必须走到聚会上,当聚会结束时,回到她的农场。每头奶牛都很懒,因此选择最短时间的最佳路线。由于道路是单向的,因此牛的返回路线可能与她原来的路线不同。 在所有的奶...

qq_44859533的博客 296

POJ 3268 Silver Cow Party(Dijkstra算法)

Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7368   Accepted: 3225 Description

qiyazhuang的专栏 592
上一篇: POJ 3259 Wormholes (Bellman Ford判负环)
下一篇: 单调队列与DP
Interstellar_
博客等级 码龄10年 8粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值