BZOJ 2100: [Usaco2010 Dec]Apple Delivery spfa
由于是无向图,所以可以枚举两个终点,跑两次最短路来更新答案.
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100006
#define M 200007
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
deque<int>q;
int n,m,A,B,C,edges;
int hd[N],to[M<<1],nex[M<<1],val[M<<1],d[2][M],inq[2][M];
void addedge(int u,int v,int c)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
}
void spfa(int s,int t)
{
// printf("%d\n",s);
memset(d[t],0x3f,sizeof(d[t]));
memset(inq[t],0,sizeof(inq[t]));
d[t][s]=0, inq[t][s]=1, q.push_back(s);
for(;!q.empty();)
{
int u=q.front(); q.pop_front();
inq[t][u]=0;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
if(d[t][u] + val[i] < d[t][v])
{
d[t][v] = d[t][u] + val[i];
if(!inq[t][v])
{
if(q.empty()||d[t][v] < d[t][q.front()]) q.push_front(v);
else q.push_back(v);
inq[t][v]=1;
}
}
}
}
}
int main()
{
int i,j;
// setIO("input");
scanf("%d%d%d%d%d",&m,&n,&A,&B,&C);
for(i=1;i<=m;++i)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c), addedge(a,b,c), addedge(b,a,c);
}
spfa(B, 0);
// printf("%d %d\n",d[0][A],d[0][C]);
spfa(C, 1);
printf("%d\n",min(d[0][A] + d[0][C], d[1][A] + d[1][B]));
return 0;
}
BZOJ 2100: [Usaco2010 Dec]Apple Delivery spfa的更多相关文章
- BZOJ 2100: [Usaco2010 Dec]Apple Delivery( 最短路 )
跑两遍最短路就好了.. 话说这翻译2333 ---------------------------------------------------------------------- #includ ...
- bzoj 2100: [Usaco2010 Dec]Apple Delivery【spfa】
洛谷数据好强啊,普通spfa开o2都过不了,要加双端队列优化 因为是双向边,所以dis(u,v)=dis(v,u),所以分别以pa1和pa2为起点spfa一遍,表示pb-->pa1-->p ...
- 【BZOJ】2100: [Usaco2010 Dec]Apple Delivery(spfa+优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=2100 这题我要吐血啊 我交了不下10次tle.. 噗 果然是写挫了. 一开始没加spfa优化果断t ...
- bzoj2100 [Usaco2010 Dec]Apple Delivery
Description Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, ...
- 【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 ...
- bzoj2100 [Usaco2010 DEC]Apple Delivery苹果贸易
题目描述 一张P个点的无向图,C条正权路.CLJ要从Pb点(家)出发,既要去Pa1点NOI赛场拿金牌,也要去Pa2点CMO赛场拿金牌.(途中不必回家)可以先去NOI,也可以先去CMO.当然神犇CLJ肯 ...
- BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )
dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) ) 被卡空间....我们可以发现 l > r 是无意义的 ...
- bzoj 1715: [Usaco2006 Dec]Wormholes 虫洞 -- spfa判断负环
1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit: 5 Sec Memory Limit: 64 MB 注意第一次加边是双向边第二次是单向边,并且每次询问前数 ...
- BZOJ 2101 [Usaco2010 Dec]Treasure Chest 藏宝箱:区间dp 博弈【两种表示方法】【压维】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2101 题意: 共有n枚金币,第i枚金币的价值是w[i]. 把金币排成一条直线,Bessie ...
随机推荐
- 异常处理 try
语法错误 这种错误的不能使用异常处理,你自己粗心写错怪谁,哼哼哼 比如说少冒号啦,丢了括号啦 逻辑错误 try: num = int(input("请输入数字")) print(1 ...
- 【bitset】Kth Minimum Clique
#include<bits/stdc++.h> #define B bitset<105> using namespace std; typedef long long ll ...
- Python 异常处理与反射机制
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- Oracle导入数据后中文乱码的解决方法
解决方法: 方法一. 1.在运行命令行输入regedit,打开注册表编辑器 2.找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1 3.看N ...
- c# internal关键字
对于一些大型的项目,通常由很多个DLL文件组成,引用了这些DLL,就能访问DLL里面的类和类里面的方法.比如,你写了一个记录日志的DLL,任何项目只要引用此DLL就能实现记录日志的功能,这个DLL文件 ...
- Js setTimeout 用法
setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method. setTi ...
- Advanced Installer 开始-程序那里增加,快捷方式、卸载软件、官方网站
. 这个是效果.
- css3之媒体查询
<html> <head> <meta charset="utf-8"> <style> body{ background-colo ...
- weblogic 反序列化漏洞 getshell
上传cmd.jsp,效果: 上传马:
- Java优化高性能高并发+高并发程序设计视频教程
转自:https://www.cnblogs.com/ajianku/p/10236573.html 第1章 课程介绍及项目框架搭建1-1 Java高并发商城秒杀优化导学1-2 项目环境搭建(Ecli ...