由于是无向图,所以可以枚举两个终点,跑两次最短路来更新答案.

#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的更多相关文章

  1. BZOJ 2100: [Usaco2010 Dec]Apple Delivery( 最短路 )

    跑两遍最短路就好了.. 话说这翻译2333 ---------------------------------------------------------------------- #includ ...

  2. bzoj 2100: [Usaco2010 Dec]Apple Delivery【spfa】

    洛谷数据好强啊,普通spfa开o2都过不了,要加双端队列优化 因为是双向边,所以dis(u,v)=dis(v,u),所以分别以pa1和pa2为起点spfa一遍,表示pb-->pa1-->p ...

  3. 【BZOJ】2100: [Usaco2010 Dec]Apple Delivery(spfa+优化)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2100 这题我要吐血啊 我交了不下10次tle.. 噗 果然是写挫了. 一开始没加spfa优化果断t ...

  4. bzoj2100 [Usaco2010 Dec]Apple Delivery

    Description Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, ...

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

  6. bzoj2100 [Usaco2010 DEC]Apple Delivery苹果贸易

    题目描述 一张P个点的无向图,C条正权路.CLJ要从Pb点(家)出发,既要去Pa1点NOI赛场拿金牌,也要去Pa2点CMO赛场拿金牌.(途中不必回家)可以先去NOI,也可以先去CMO.当然神犇CLJ肯 ...

  7. BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )

    dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) ) 被卡空间....我们可以发现 l > r 是无意义的 ...

  8. bzoj 1715: [Usaco2006 Dec]Wormholes 虫洞 -- spfa判断负环

    1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit: 5 Sec  Memory Limit: 64 MB 注意第一次加边是双向边第二次是单向边,并且每次询问前数 ...

  9. BZOJ 2101 [Usaco2010 Dec]Treasure Chest 藏宝箱:区间dp 博弈【两种表示方法】【压维】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2101 题意: 共有n枚金币,第i枚金币的价值是w[i]. 把金币排成一条直线,Bessie ...

随机推荐

  1. 剑指offer35:数组中的逆序对

    1 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%10 ...

  2. window 杀固定端口的进程

    window 杀固定端口的进程   一. 查看所有进程占用的端口   在开始-运行-cmd,输入:netstat –ano可以查看所有进程       二.查看占用指定端口的程序   当你在用tomc ...

  3. shell习题第16题:查用户

    [题目要求] 写个shell,看看你的Linux系统中是否有自定义的用户(普通用户),如有有的话统计个数 [核心要点] CentOS6,uid>=500 CentOS7,uid>=1000 ...

  4. 有趣的后渗透工具 Koadic

    koadic是DEFCON黑客大会上分享出来的的一个后渗透工具,虽然和msf有些相似,但是Koadic主要是通过使用Windows ScriptHost(也称为JScript / VBScript)进 ...

  5. luogu P4762 [CERC2014]Virus synthesis (回文自动机)

    大意: 初始有一个空串, 操作(1)在开头或末尾添加一个字符. 操作(2)在开头或末尾添加该串的逆串. 求得到串$S$所需最少操作数. 显然最后一定是由某个偶回文通过添加字符得到的, 那么只需要求出所 ...

  6. SMTP实现发送邮箱1

    #include "stdafx.h" #include <iostream> #include <WinSock2.h> using namespace ...

  7. idea自动在文件头中添加作者和创建时间

    设置路径 : File -> Settings -> Editor -> File and Code Templates 定制头模板: /** * @Author: chancy * ...

  8. kubernetes之node隔离与恢复

    需求: 在硬件升级, 硬件维护等情况下, 我们需要将某些node隔离, kubectl cordon <node_name> #禁止pod调度到该节点上, 在其上运行的pod并不会自动停止 ...

  9. java--springmvc

    springmvc请求图 SpringMVC内部的执行流程1.用户发起到达中央调度器DispatcherServlet2.中央调度器DispatcherServlet把请求(some.do)交给了处理 ...

  10. python+selenium之——pip环境变量配置

    将pip的路径……\Python37-32\Scripts添加进Path: 而非……\Python37-32\Lib\site-packages\pip-18.1-py3.7.egg