两次SPFA

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std; const int INF=0x7FFFFFFF;
const int maxn=+;
const int Maxn=+;
int N,M;
int U[Maxn],V[Maxn],C[Maxn];
struct edge
{
int from,to,cost;
}e[Maxn];
vector<int>G[maxn];
int dis1[maxn],flag1[maxn];
int dis2[maxn],flag2[maxn]; void init()
{
for(int i=;i<maxn;i++) G[i].clear();
} void spfa()
{
queue<int>Q;
for(int i=;i<maxn;i++) dis1[i]=INF;
dis1[]=;
flag1[]=;
Q.push();
while(!Q.empty())
{
int h=Q.front();Q.pop(); flag1[h]=;
for(int i=;i<G[h].size();i++)
{
int id=G[h][i];
if(e[id].from==h)
{
if(dis1[h]+e[id].cost<dis1[e[id].to])
{
dis1[e[id].to]=dis1[h]+e[id].cost;
if(flag1[e[id].to]==)
{
flag1[e[id].to]=;
Q.push(e[id].to);
}
}
}
else if(e[id].to==h)
{
if(dis1[h]+e[id].cost<dis1[e[id].from])
{
dis1[e[id].from]=dis1[h]+e[id].cost;
if(flag1[e[id].from]==)
{
flag1[e[id].from]=;
Q.push(e[id].from);
}
}
}
}
}
} void SPFA()
{
queue<int>Q;
for(int i=;i<maxn;i++) dis2[i]=INF;
dis2[N-]=;
flag2[N-]=;
Q.push(N-);
while(!Q.empty())
{
int h=Q.front();Q.pop(); flag2[h]=;
for(int i=;i<G[h].size();i++)
{
int id=G[h][i];
if(e[id].from==h)
{
if(dis2[h]+e[id].cost<dis2[e[id].to])
{
dis2[e[id].to]=dis2[h]+e[id].cost;
if(flag2[e[id].to]==)
{
flag2[e[id].to]=;
Q.push(e[id].to);
}
}
}
else if(e[id].to==h)
{
if(dis2[h]+e[id].cost<dis2[e[id].from])
{
dis2[e[id].from]=dis2[h]+e[id].cost;
if(flag2[e[id].from]==)
{
flag2[e[id].from]=;
Q.push(e[id].from);
}
}
}
}
}
}
int main()
{
while(~scanf("%d%d",&N,&M)){
init();
for(int i=;i<=M;i++)
{
scanf("%d%d%d",&U[i],&V[i],&C[i]);
e[i].from=U[i];
e[i].to=V[i];
e[i].cost=C[i];
G[U[i]].push_back(i);
G[V[i]].push_back(i);
}
spfa();
SPFA(); int ans=;
int Len=dis1[N-];
for(int i=;i<=M;i++)
{
if(dis1[U[i]]+dis2[V[i]]+C[i]==Len||dis2[U[i]]+dis1[V[i]]+C[i]==Len)
ans=ans+C[i]+C[i];
}
printf("%d\n",ans);
}
return ;
}

UVALive 6885 Flowery Trails的更多相关文章

  1. UVALive 6885 Flowery Trails 最短路

    Flowery Trails 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid= ...

  2. UVALive 6885 Flowery Trails 最短路枚举

    题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129723 题意: 给你一个n点m图的边 1到n有多条最短路 ...

  3. HNU 13375 Flowery Trails (spfa最短路)

    求最短路径覆盖的全部边权值和. 思路:分别从起点和终点两次求最短路,再比较两个点到起点的距离和他们之间的权值相加和是否等于最短路径. 这题很好 #include <cstring> #in ...

  4. kuangbin带你飞 最短路 题解

    求一个图最短路边的办法.好像下面的那个有问题.单向边和双向边一定是有区别的.这个比较容易.参照该文的最短路网络流题目和连通图题目一题求最短路关节边 另外上述2个题目的代码好像有问题. 在UVALIVE ...

  5. UVALive - 4108 SKYLINE[线段树]

    UVALive - 4108 SKYLINE Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug ...

  6. UVALive - 3942 Remember the Word[树状数组]

    UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...

  7. UVALive - 3942 Remember the Word[Trie DP]

    UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...

  8. Codeforces 209 C. Trails and Glades

    Vasya went for a walk in the park. The park has n glades, numbered from 1 to n. There are m trails b ...

  9. CodeForces 209C Trails and Glades

    C. Trails and Glades time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

随机推荐

  1. erlang进程与操作系统线程

    erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如 ...

  2. 微信web开发工具

    http://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html#.E4.B8.8B.E8.BD.BD.E5.9C.B0.E5 ...

  3. iis本地无法通过ip地址访问网站

    防火墙等通通检查过没有发现问题,最后发现是我安装了一款adsafe的广告过滤软件捣的鬼,此软件设置界面没有这样的设置条款,估计是默认的配置,退出后,就ok了.

  4. PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件

    作 为PHP入门开发者,常常有这种述求:自己的网站中需要添加一个使用自己的域名作为发件人邮件地址的自动发送邮件的方法,用于诸如给用户发送验证码.通知 信息等.比如:我的某个用户注册模块,需要使用reg ...

  5. Android:如何实现更换主题

    关键代码:setTheme(int ID); 注意点: 1.设置主题必须要在setContentView() 之前调用,所以需要写个Intent去重新开启Activity. 2.为了切换主题保证流畅性 ...

  6. 学习笔记——迭代器模式Iterator

    迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定 ...

  7. Ubuntu+Django+mod_wsgi+Apache配置过程

    Ubuntu15.10 Apache2.4( sudo apt-get install apache2 ) Python3.4( sudo apt-get install apache2 ),  [系 ...

  8. android CTS测试

    CTS认证是获得Google推出的Android系统中Android Market服务的前提 CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出A ...

  9. .net core nlog记录日志

    1.通过nuget 查找 下载 NLog.Extensions.Logging 2.配置nlog.config文件 <?xml version="1.0" encoding= ...

  10. Ubuntu基本命令--apt, dpkg

    一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install so ...