POJ3268题解

这道题目是关于求解奶牛从各自农场出发,经过单向道路到达指定农场参加派对,然后返回的最长旅行时间。问题转化为寻找每个农场到指定农场的最短路径,加上返回时的最短路径,求最大值。通过迪杰斯特拉算法可以高效解决。给出的AC代码实现了这一解决方案。

题目翻译:

N个农场各一头奶牛(1头≤ N≤ 1000)方便编号的1..N将参加在农场#X(1≤ X≤ N)举行的大型奶牛派对 。共M(1),≤ M≤ 100000)单向道路连接两个农场;道路i需要Ti(1≤ Ti≤ 100)穿越的时间单位。

每头母牛都必须步行到聚会地点,聚会结束后返回农场。每头母牛都很懒,因此选择了一条时间最短的最佳路线。由于道路是单向的,因此母牛返回聚会地点的路线可能与原来的路线不同。

在所有的奶牛中,一头奶牛往返于派对的最长时间是多少?

输入

第1行:三个空格分隔的整数,分别为:N、M和X

第2..M+1行:第i+1行使用三个空格分隔的整数(Ai、Bi和Ti)描述道路i。所描述的道路从农场Ai到农场Bi,需要Ti时间单位来穿越。

输出

第1行:一个整数:任何一头牛必须行走的最长时间。

说人话,就是求每个点到固定点的最短路加上固定点到此点的最短路的最大值

我们枚举每个点,跑迪杰,这道题就被爆切掉做完了

AC代码:

#include<iostream>
#include<string.h>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;

struct edge{
	int to,val;
	edge(int t,int v){
		to=t;
		val=v;
	}
};

struct node{
	int num,dis;
	node(int nm,int d){
		num=nm;
		dis=d;
	}
};

bool operator<(node x,node y){return x.dis>y.dis;}

int n,m,X,ans,vis[1009],dist[1009],dm[
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值