POJ 3268 Silver Cow Party dijkstra算法变种

【代码超详解】POJ 3268 Silver Cow Party(Dijkstra 算法 + 思维) 一、题目描述 二、算法分析说明与代码编写指导 每头牛都会到点 x 参加聚会,然后返回。但路是单向的,因此回去的路可能与来的路不同。 如果对每个点都跑一次 Dijkstra,或者直接跑一次 Floyd 算法,由于复杂度达到 O(n^3),在本题的数据规模下会超时。 从 x 回去的最短路可以直接套 Dijkstra 算法求解单源最短路径。从各点来到 x 的最短路径也只需要跑一次 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) unidirectional (one-way roads connects pairs of farms; road i requires Ti (1 ≤ Ti ≤ 100) units of time to traverse.
Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow’s return route might be different from her original route to the party since roads are one-way.
Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?
Input
Line 1: Three space-separated integers, respectively: N, M, and X
Lines 2…M+1: Line i+1 describes road i with three space-separated integers: Ai, Bi, and Ti. The described road runs from farm Ai to farm Bi, requiring Ti time units to traverse.
Output
Line 1: One integer: the maximum of time any one cow must walk.
Sample Input
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
Sample Output
10
Hint
Cow 4 proceeds directly to the party (3 units) and returns via farms 1 and 3 (7 units), for a total of 10 time units.

题目大意:
现有n个农场,这n个农场中的牛要去x农场聚会。每个农场中的牛去和返回都要走最短路,问总耗时最长的牛所耗时间是多少。

解题思路:
首先就想到了Floyd算法,写完之后果然超时了。。。
我们可以先求出从x到其余各个农场的最短路径,代表它们返回的最短路径;然后将所有边反向,再求从x到 i 的最短路径代表它们来参加聚会的最短路径,这样对应相加找出一个最大值就可以了。总共使用了两次dijkstra算法。

AC代码:

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
#define maxn 10001
int map[maxn][maxn];//存放地图信息
int d[maxn];
int data2[maxn];//存放第一次使用dijkstra算法之后的返回最短路径
bool mark[maxn];
int n, m, x;
#define INF 0x3fffffff
void init() {//初始化
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			map[i][j] = -1;
		}
		map[i][i] = 0;
		d[i] = INF; mark[i] = false;
	}
}
void rev() {//矩阵转置
	int tmp;
	for (int i = 1; i <= n; i++) {
		for (int j =i+1; j <= n; j++) {
			tmp = map[i][j]; map[i][j] = map[j][i];
			map[j][i] = tmp;
		}
	}
}
void dj(int s) {//单源最短路径  s是起点
	for (int i = 1; i <= n; i++) {
		d[i] = INF; mark[i] = false;
	}
	d[s] = 0; mark[s] = true;
	int newnode = s;
	for (int k = 1; k < n; k++) {//循环n-1次
		for (int j = 1; j <= n; j++) {
			if (mark[j] || map[newnode][j] == -1) continue;
			if (d[j] == INF || d[j] > d[newnode] + map[newnode][j]) {
				d[j] = d[newnode] + map[newnode][j];
			}
		}
		int tmp = INF;
		for (int i = 1; i <= n; i++) {
			if (mark[i] || d[i] == INF) continue;
			if (d[i] < tmp) {
				tmp = d[i]; newnode = i;
			}
		}
		mark[newnode] = true;
	}
}
int main() {
	scanf("%d%d%d", &n, &m, &x);
	init();
	int u, v, w;
	for (int i = 1; i <= m; i++) {
		scanf("%d%d%d", &u, &v, &w);
		map[u][v] = w;
	}
	dj(x);//求出从终点向其他结点的花费
	for (int i = 1; i <= n; i++) { data2[i] = d[i]; }
	rev();
	dj(x);
	int ans = 0;
	for (int j = 1; j <= n; j++) {
		ans = max(ans, data2[j] + d[j]);
	}
	printf("%d\n", ans);
}
Qi标准下的充电协议及其记忆技巧 记忆无线充电协议中的。 阅读详情

相关推荐

智能座舱架构与芯片- (10) 音频篇 下

若将有限个 量化样值的绝对值从小到大依次排列,并对应地依次赋予一个十进制数字代码(例如,赋予样值0的十进制数字代码为0),在码前以“+”、“-”号为前缀,来 区分样值的正、负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。如果声学密封不牢,来自内部结构的噪声可能到达传感器,两个传感器之间的泄漏可能降低BF算法的性能。未来,随着汽车电动化的普及,传统的ANC降噪所针对的发动机噪音已经不复存在,而路噪问题将越发明显,因此,全新的RNC主动路噪消减技术将会有一个更为宽广的市场。

joanna_xiao的博客 3838

【算法·命运-32】Dijkstra及其变种

Dijkstra 算法:适用于非负权重的图,时间复杂度 O((V + E) logV),常用于单源最短路径问题。A算法*:Dijkstra 的变种,适用于路径规划,使用启发式函数加速搜索。Bellman-Ford 算法:适用于含有负权边的图,时间复杂度 O(V * E),可检测负权环。Johnson 算法:适用于所有节点对最短路径问题,能够处理负权边,但没有负权环,时间复杂度 O(V^2 * logV + VE)。Floyd-Warshall 算法。

m0_69378371的博客 1160

英飞凌 AURIX Development Studio工程移植到Hightec的方法

1. 软件简介 AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 Hightec是一款可以用来开发Aurix系列单片机的编译器,有免费版,可商用,集成GCC编译器,可用UDE

weixin_42967006的博客 7134

详细总结Dijkstra算法以及其变形

Dijkstra算法 Dijkstra算法是对图求单元最短路径问题的常用算法。 基本思想就是对图G(v,e)设一个集合S,存放已被访问的顶点,然后每次在剩余未被访问的结点中找到一个距离起点最近的结点,将此结点放入集合S,并以此结点出发向各个与此结点连接的未被访问的结点访问,看以此结点为中介结点到下一结点的距离是否比当前起点到下一结点的距离要短,如果更短,则以此结点为从起点到下一结点的中介点,修改...

爱放火的安小妮的博客 1700

西工大noj100题python2024第三季21-30

【代码】西工大noj100题python2024第三季21-30。

weixin_70523540的博客 1576

CANoe数据回放实战:如何用Replay Block精准复现实车故障(附ECU数据处理技巧)

本文深入探讨了利用CANoe的Replay Block功能进行数据回放,以精准复现实车偶发性故障的实战方法。文章重点解析了从原始OBD日志中移除目标ECU数据、转换报文方向等核心数据处理技巧,旨在帮助工程师重构真实的网络测试环境,从而高效定位并解决复杂的ECU问题。

nnn11的博客 495

【贪心算法】Dijkstra 算法及其衍生

Dijkstra 算法学习摘录

恭仔的博客 2230

AD20.多对多工程中将某个原理图导入PCB工程

AD20将多个原理图中的一个或多个导入到PCB文件中

鬼爷杂货铺 1万+

Dijkstra算法大师:轻松应对LeetCode难题

地图中的导航功能就是基于迪杰斯特拉算法(Dijkstra)实现的,力扣周赛中经常出现基于这个算法的变种题

数据与算法架构提升之路专栏 1189

卫星轨道坐标转换:轨道六根数到经纬高(经STK验证)

a:半长轴(km)e:偏心率i:轨道倾角(度)Ω:升交点赤经(度)ω:近地点幅角(度)ν:真近点角(度)

weixin_52370774的博客 170

【目标检测】IoU(交并比)详解及代码实现

1. IOU概述        IoU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是“预测的边框”和“真实的边框”的交叠率-,即它们的交集和并集的比值。最理想情况是完全重叠,即比值为1。 2. IoU计算        IoU等于“预测的边框”和“真实的边框”之间交集和并集的比值。IoU计算如下图,B1为真实

Roaddd的博客 2万+

【图论】迪杰特斯拉算法

在本文中,我们深入探讨了迪杰斯特拉算法的原理与应用。作为一种经典的最短路径算法,迪杰斯特拉算法通过优先队列有效地解决了从单一源点到其他所有节点的最短路径问题。我们分析了其时间复杂度和空间复杂度,了解了在不同图形结构下的性能表现。通过示例和实现,我们不仅掌握了算法的基本步骤,还体验了其在实际应用中的重要性。无论是在交通导航、网络路由还是各种优化问题中,迪杰斯特拉算法都发挥着不可或缺的作用。希望本文能够帮助你更好地理解迪杰斯特拉算法,并为你在图论和算法领域的进一步学习打下坚实的基础。

2301_79969994的博客 5101

从入门到精通:LabVIEW全攻略

本文为 LabVIEW 全攻略指南,系统梳理从基础到高级的核心知识与应用技巧。首先介绍 LabVIEW 的图形化编程特性、数据流运行机制及开发环境,通过创建与调试 VI 的实操演示帮助入门。接着深入解析程序结构(循环、分支、顺序)、数据类型(数组、簇、波形)及图形显示技术(Graph、XY Graph 等)的原理与应用场景。高级部分涵盖多线程编程、错误处理、硬件通信及第三方工具集成等进阶技术,并针对程序逻辑、硬件适配、性能优化等常见问题提供排查与解决方案。

邓邓子的博客 3574

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

POJ 3268 Silver Cow Party 【反向dijkstra】

POJ 3268 Silver Cow Party 题目大意: 每个农场有一只奶牛,所有奶牛都要去指定的一个农场X中聚会,聚会结束后各自回自己的农场, 求所有的奶牛出门参加聚会再回到家中的最短用时,即求出耗时最长的奶牛的时间 具体思路: 最短路求解,先求x到各个农场的时间,再将各边反向,再求一次x到各个农场的时间。 将两个时间相加,最小的时间即为所求 (求图中所有点到指定点的最短距离可以转化为求指...

指弹键盘哼民谣 810

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[POJ3268](最短路dijkstra+反向存图)Silver Cow Party

POJ3268Silver Cow Party 题目 ne 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) u...

Z7784562的博客 326

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

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(双向最短路)

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 ]Dijkstra

[POJ 3268 Silver Cow Party ]Dijkstra知识点:Dijkstra1. 题目链接[POJ 3268 Silver Cow Party ]2. 题意描述有nn个顶点,mm条边的有向图。求图中所有,从该节点出发到点xx,然后从xx回到该节点的最短路最长有多长。 (1≤N≤1000,1≤M≤100,000)(1 ≤ N ≤ 1000,1 ≤ M ≤ 100,000)3. 解

Fighting! 539

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 ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road i require

yulong_D的博客 234

POJ-3268-Silver Cow Party

链接:https://vjudge.net/problem/POJ-3268 题意: 1-N个农村要在X位置举办Party。求N个农村过去个回来的最大值。 给一个带权有向图,N个结点,M条路径。和点X。 思路: 第一次用Floyd算法O(N^3)超时了。 然后用两个二维数组,记录原数组和原数组的反方向。 例如,原数组Map1[x][1]记录的是x->1即从x回来的路程,Map2...

weixin_33896069的博客 150

POJ 3268 Silver Cow Party dijkstra最短路

POJ 3268 Silver Cow Party 题目大意: 每个农场有一只奶牛,所有奶牛都要去指定的一个农场X中聚会,聚会结束后各自回自己的农场, 求所有的奶牛出门参加聚会再回到家中的最短用时,即求出耗时最长的奶牛的时间 具体思路: 最短路求解,先求x到各个农场的时间,再将各边反向,**再求一次x到各个农场的时间。**将两个时间相加,最小的时间即为所求 我本来还傻傻的跑了N遍,以求出每个点对其他点的最短路,看了题解才发现有这样神奇的思路。 求图中所有点到指定点的最短距离可以转化为求指定点到所有点的最短距

EP的别三日 220

【POJ 3268 --- Silver Cow Party】dijsktra,最短路

【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 part...

来日浅谈的博客 663

POJ3268 Silver Cow Party 反向建图(Dijkstra)

Sample Input 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 Sample Output 10 注意: 在写正向和反向dij的时候注意替换全部的dis和visited为另外一个数组 否则你就会debug两小时(逃) 考虑提前终止条件,当前点的更新最好放在循环外边 考虑用邻接数组代替邻接链表?(节省时间) 代码如下: #include <stdio.h> #include <iostream> #inclu.

Lewis的博客 237
上一篇: POJ 3259 Wormholes Bellman-Ford算法模板题 SPAF模板题
下一篇: AOJ 2249 Road Construction Dijkstra变种
RPG_Zero
博客等级 码龄8年 77粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值