USACO Apple Delivery
洛谷 P3003 [USACO10DEC]苹果交货Apple Delivery
JDOJ 2717: USACO 2010 Dec Silver 1.Apple Delivery
Description
Bessie has two crisp red apples to deliver to two of her friends
in the herd. Of course, she travels the C (1 <= C <= 200,000)
cowpaths which are arranged as the usual graph which connects P (1
<= P <= 100,000) pastures conveniently numbered from 1..P: no cowpath
leads from a pasture to itself, cowpaths are bidirectional, each
cowpath has an associated distance, and, best of all, it is always
possible to get from any pasture to any other pasture. Each cowpath
connects two differing pastures P1_i (1 <= P1_i <= P) and P2_i (1
<= P2_i <= P) with a distance between them of D_i. The sum of all
the distances D_i does not exceed 2,000,000,000.
What is the minimum total distance Bessie must travel to deliver
both apples by starting at pasture PB (1 <= PB <= P) and visiting
pastures PA1 (1 <= PA1 <= P) and PA2 (1 <= PA2 <= P) in any order.
All three of these pastures are distinct, of course.
Consider this map of bracketed pasture numbers and cowpaths with
distances:
3 2 2
[1]-----[2]------[3]-----[4]
\ / \ /
7\ /4 \3 /2
\ / \ /
[5]-----[6]------[7]
1 2
If Bessie starts at pasture [5] and delivers apples to pastures [1]
and [4], her best path is:
5 -> 6-> 7 -> 4* -> 3 -> 2 -> 1*
with a total distance of 12.
Input
* Line 1: Line 1 contains five space-separated integers: C, P, PB,
PA1, and PA2
* Lines 2..C+1: Line i+1 describes cowpath i by naming two pastures it
connects and the distance between them: P1_i, P2_i, D_i
Output
* Line 1: The shortest distance Bessie must travel to deliver both
apples
Sample Input
9 7 5 1 4 5 1 7 6 7 2 4 7 2 5 6 1 5 2 4 4 3 2 1 2 3 3 2 2 2 6 3
Sample Output
12
题目翻译:
贝西有两个又香又脆的红苹果要送给她的两个朋友。当然她可以走的C(1<=C<=200000)条“牛路”都被包含在一种常用的图中,包含了P(1<=P<=100000)个牧场,分别被标为1..P。没有“牛路”会从一个牧场又走回它自己。“牛路”是双向的,每条牛路都会被标上一个距离。最重要的是,每个牧场都可以通向另一个牧场。每条牛路都连接着两个不同的牧场P1_i和P2_i(1<=P1_i,p2_i<=P),距离为D_i。所有“牛路”的距离之和不大于2000000000。
现在,贝西要从牧场PB开始给PA_1和PA_2牧场各送一个苹果(PA_1和PA_2顺序可以调换),那么最短的距离是多少呢?当然,PB、PA_1和PA_2各不相同。
题解:
这道题如果用裸的SPFA做会TLE,所以要加优化。
如果有像20分钟之前的我一样对SPFA算法优化一无所知的人,请移步我的上一篇博客:
但是光知道怎么优化是不够的,我们还要就这个题想一想怎么写。
首先,这个题的源点不再是一,所以SPFA的时候要传参数。
其次,最后统计答案的时候要比较一下。
最后,拍一遍SPFA模板(SLF LLL优化版都可以)(本蒟蒻比较喜欢SLF),AC。
注意双向边的问题。
CODE:
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
int m,n,s,t1,t2;
int tot,to[400001],val[400001],nxt[400001],head[100001];
int dist[100001],v[100001];
void add(int x,int y,int z)
{
to[++tot]=y;
val[tot]=z;
nxt[tot]=head[x];
head[x]=tot;
}
void spfa(int start)
{
memset(v,0,sizeof(v));
memset(dist,0x3f,sizeof(dist));
deque<int> q;
dist[start]=0;
v[start]=1;
q.push_front(start);
while(!q.empty())
{
int x=q.front();
q.pop_front();
v[x]=0;
for(int i=head[x];i;i=nxt[i])
{
int y=to[i];
if(dist[x]+val[i]<dist[y])
{
dist[y]=dist[x]+val[i];
if(!v[y])
{
if(!q.empty() && dist[y]<dist[q.front()])
q.push_front(y);
else
q.push_back(y);
v[y]=1;
}
}
}
}
}
int main()
{
scanf("%d%d%d%d%d",&m,&n,&s,&t1,&t2);
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
int ans1=0;
int ans2=0;
spfa(t1);
ans1+=dist[t2]+dist[s];
spfa(t2);
ans2+=dist[t1]+dist[s];
int ans=min(ans1,ans2);
printf("%d",ans);
return 0;
}
USACO Apple Delivery的更多相关文章
- BZOJ 2100: [Usaco2010 Dec]Apple Delivery( 最短路 )
跑两遍最短路就好了.. 话说这翻译2333 ---------------------------------------------------------------------- #includ ...
- 洛谷P3003 [USACO10DEC]苹果交货Apple Delivery
P3003 [USACO10DEC]苹果交货Apple Delivery 题目描述 Bessie has two crisp red apples to deliver to two of her f ...
- 洛谷——P3003 [USACO10DEC]苹果交货Apple Delivery
P3003 [USACO10DEC]苹果交货Apple Delivery 这题没什么可说的,跑两遍单源最短路就好了 $Spfa$过不了,要使用堆优化的$dijkstra$ 细节:1.必须使用优先队列+ ...
- 洛谷 P3003 [USACO10DEC]苹果交货Apple Delivery
洛谷 P3003 [USACO10DEC]苹果交货Apple Delivery 题目描述 Bessie has two crisp red apples to deliver to two of he ...
- bzoj2100 [Usaco2010 Dec]Apple Delivery
Description Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, ...
- P3003 [USACO10DEC]苹果交货Apple Delivery
题目描述 Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, she tr ...
- 【bzoj2100】[Usaco2010 Dec]Apple Delivery 最短路
题目描述 Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, she tr ...
- 【BZOJ】2100: [Usaco2010 Dec]Apple Delivery(spfa+优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=2100 这题我要吐血啊 我交了不下10次tle.. 噗 果然是写挫了. 一开始没加spfa优化果断t ...
- Dijkstra【p3003(bzoj2100)】[USACO10DEC]苹果交货Apple Delivery
Description 贝西有两个又香又脆的红苹果要送给她的两个朋友.当然她可以走的C(1<=C<=200000)条"牛路"都被包含在一种常用的图中,包含了P(1< ...
随机推荐
- 有史以来Mysql面试题大全详解?
1.MySQL的复制原理以及流程 根柢原理流程,3个线程以及之间的相关: 主:binlog线程——记载下悉数改动了数据库数据的语句,放进master上的binlog中: 从:io线程——在运用sta ...
- display Flex 盒子模型布局兼容Android UC
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content= ...
- Office Online Server 在线编辑Office文档,安装部署
Office Online Server部署安装 部署环境 一台windows server2012 (搭建域环境)/多次遇坑之后,强烈建议域环境为server2012 一台windows serve ...
- VMware 自动开多台虚拟机脚本
d:cd "D:\WinInstall\VMware\VMware Workstation"ECHO "start vm1"vmrun -T ws start ...
- Java连载7-变量&数据类型
一.变量 1.注意点: 在同一个“作用域”中,变量名不能重名,但是变量可以重新赋值. 2.什么是作用域? 答:描述的是变量的有效范围,在范围之内是可以被访问的,只要出了作用域就无法访问(也就是在大括号 ...
- EasyUIDataGrid列标题换行显示
有时候表格标题字数太多,而宽度有限,就会导致一部分列的标题显示不出来 这时候,加入如下css代码即可将标题换行显示 .datagrid-header-row .datagrid-cell span { ...
- Zabbix 监控阿里云RDS
简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ...
- Zabbix图表中文乱码(包含Docker安装乱码)
目录 Zabbix 4.0 版本 Zabbix 3.0 版本 Zabbix 4.0 Docker 版本 图表乱码问题解决 文章github 地址: 点我 最近在看 Zabbix 4.0 版本的官方文档 ...
- 使用AvalonEdit实现WPF的Lua编辑器
原文发布于:https://www.chenxublog.com/2019/07/14/use-avalonedit-make-wpf-lua-editor.html 由于LLCOM里面内置了Lua代 ...
- Java生鲜电商平台-销售管理设计与架构
Java生鲜电商平台-销售管理设计与架构 说明:在Java开源生鲜电商平台中,销售人员我们称为跟餐饮店老板沟通与下载APP的一类地推人员.(所谓地推指的就是一个一个上门拜访.) 由于销售人员有以下几类 ...