题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=129723

题目大意:n个点,m条边,求出从0到n的最短距离,输出途中经过的边的权值和并乘以2(最短路不唯一且有重边)

题目思路:spfa求出最短路,在反向推回去

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define MOD 10000007
using namespace std;
#define N 10005
#define maxn 250050
#define inf 0x3f3f3f3f int n,m,head[N],d[N],vis[N],ans;
struct Node{
int to,v,next;
}node[maxn<<]; ///因为是双向边,所以要开2倍
int n_cnt; inline void add(int x,int y,int v)
{
node[n_cnt].v=v;
node[n_cnt].to=y;
node[n_cnt].next=head[x];
head[x]=n_cnt++;
} void init()
{
memset(d,inf,sizeof(d)); ///保存最短距离
memset(head,-,sizeof(head)); ///边的头结点
memset(vis,,sizeof(vis));
n_cnt=ans=;
} void spfa()
{
queue<int>q;
d[]=;
q.push();
while(!q.empty())
{
int u=q.front(); q.pop();
vis[u]=;
for(int i=head[u]; i+; i=node[i].next)
{
int pos=node[i].to;
if(d[pos]>d[u]+node[i].v)
{
d[pos]=d[u]+node[i].v;
if(!vis[pos])
{
q.push(pos);
vis[pos]=;
}
}
}
}
} void _solve()
{
queue<int>q;
q.push(n-);
int i;
memset(vis,,sizeof(vis));
vis[n-]=;
while(!q.empty())
{
int u=q.front();q.pop();
for(i=head[u]; i+; i=node[i].next)
{
int pos=node[i].to;
if(d[pos]+node[i].v==d[u]) ///如果从pos->u的距离满足条件,则符合题意
{ ///满足的是最短路条件
ans+=node[i].v;
if(!vis[pos])
{
vis[pos]=;
q.push(pos);
}
}
}
}
printf("%d\n",ans<<);
} int main()
{
int i,j,x,y,v;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
for(i=; i<m; ++i)
{
scanf("%d%d%d",&x,&y,&v);
add(x,y,v);
add(y,x,v);
}
spfa();
_solve();
}
return ;
}

Uvalive6885(最短路)的更多相关文章

  1. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  2. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  3. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  4. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  5. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  6. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  8. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

  9. Python中三目计算符的正确用法及短路逻辑

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

随机推荐

  1. Django——Django中的QuerySet API 与ORM(对象关系映射)

    首先名词解释. ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型 ...

  2. PHP中单引号双引号使用原则

    PHP中单引号双引号使用原则   1.PHP中尽量用单引号,HTML代码全部用双引号   2.在包含变量的时候,用双引号可以简化操作   3.复杂的情况下用大括号包起来   4 PHP引号还有一个用处 ...

  3. 详解Android首选项框架的使用

    首选项这个名词对于熟悉Android的朋友们一定不会感到陌生,它经常用来设置软件的运行参数. Android提供了一种健壮并且灵活的框架来处理首选项.它提供了简单的API来隐藏首选项的读取和持久化,并 ...

  4. mongoDB id 导出,dump,sed,count,mysql import等用法示例

    #count collectiondb.news.count({"lpublishtime":{"$gte":1358697600000}}); #mongo导 ...

  5. 【MyBatis学习14】MyBatis和Spring整合

    前面十几篇博文总结了mybatis在开发中的相关技术,但在实际中都是和spring整合开发的,所以这里总结一下mybatis和spring的整合方法,并在整合后进行测试. 1. 整合的环境 这都是老掉 ...

  6. 10张思维导图带你学习【Java​Script】

    思维导图小tips:思维导图又叫心智图.是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧.把各级主题的关系用相互隶属与相关的层级图表现出来 ...

  7. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

  8. [容器]python搭建简易服务器+docker导入多个镜像shell脚本

    从其他机器导出来的docker镜像,集中地放在某台上,其他的机器执行 curl xxx:8000/load_images.sh 来导入镜像,简单方便 使用python简易web服务器. (在镜像目录下 ...

  9. YUV格式详细解释与FFMPEG的关系

    YUV主要的采样格式 主要的采样格式有YCbCr 4:2:0.YCbCr 4:2:2.YCbCr 4:1:1和 YCbCr 4:4:4.其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 ...

  10. 从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数

    这一章节我们讨论一下扩展添加检查订单功能,以便记录并检測输入的參数. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03 ...