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;
}



Abaqus梁模型仿真中的常见陷阱与优化策略 本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。 阅读详情

相关推荐

Modelsim 安装步骤详解

Modelsim 安装步骤详解目录一、modelsim简述及下载1、简介及特点2、modelsim版本3、modelsim下载二、安装步骤详解三、注册简述四、总结与参考资料1、总结2、参考资料 目录 本篇文章主要对Modelsim SE版本安装步骤的介绍。 一、modelsim简述及下载 1、简介及特点 简介 modelsim是Mentor公司开发的优秀的HDL语言仿真软件。 它能提供友好的仿真环境,采用单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单

执迷不悟 15万+

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

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

c___c18的博客 567

TMC步进电机驱动stealthChop

经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。

那可真是太开心了的博客 4489

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

今天将最短路

m0_69478376的博客 533

从零实现反激式电源仿真:LTspice高级应用实例

深入解析反激式开关电源的建模与仿真过程,利用LTspice实现从零搭建电路,精准验证电路仿真效果,提升电源设计效率与可靠性。

weixin_36149538的博客 1897

手把手教你解决Keil5安装时xerces-c_3_0.dll缺失和0xc000007b报错(附文件下载与路径设置)

本文详细解析了Keil5安装过程中常见的xerces-c_3_0.dll缺失和0xc000007b报错问题,提供了从文件获取、路径设置到系统配置的完整解决方案。同时,文章还涵盖了STM32开发环境的搭建技巧和最佳实践,帮助开发者快速构建稳定的嵌入式开发环境。

weixin_29164497的博客 600

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

WSL2部署Cadence Virtuoso IC25.1:Ubuntu 26.04排障实录

WSL2以轻量虚拟机结合完整Linux内核,为Windows桌面环境提供了原生级Linux运行能力,解决了传统虚拟机资源开销大、双系统切换低效的问题。对于依赖X11图形协议、FlexNet许可服务和特定动态库的EDA工具链而言,利用WSL2部署Linux发行版需要关注系统集成、显示通路与许可连通性。从技术原理看,图形层X Server的配置、动态库依赖的补齐以及license服务的主机名解析,共同构成EDA工具在WSL2中稳定运行的关键环节。在芯片设计场景中,设计工程师常需在Windows办公机与Linux

weixin_29597551的博客 211

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

华为OD机试真题 新系统2026-04-01 Python&JS【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 3230

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

基础最短路四 POJ3268

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

Hide_in_Code 642

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

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

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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、付费专栏及课程。

余额充值