1218: 奇奇与变形金刚

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 130  Solved: 37
[Submit][Status][Web Board]

Description

奇奇 gigi
奇奇口头禅:别人的失败就是我的快乐!
星座:处女座
生日:8月25日
血型:不明
年龄:2岁
生肖:鸡
身高:120公分
体重:149公斤
职业:机器人
兴趣:周游世界
宠物:变形金刚
最喜欢:充电
最讨厌:拔掉它的电源插头
偶像:科学怪人
语言:中文
大眼睛,圆滚滚的合金身躯,灵活的脑袋可以旋转180度,是由科学怪人制造出来的超级机器人,通过电力补充能源,通过各种数据的测试表明,它几乎继承了科学怪人的所有优点,而且同样痴迷于科学研究。后来没想到科学怪人破产,只好忍痛把它卖给有钱的富翁做宠物机器人。但是奇奇并不甘心永远做有钱人的宠物,他希望赚到足够的钱赎回自己,继续它心爱的科学研究事业。
虽然是科学怪人所制造的,但脑部功能却稳定很多,不会发生心智丧失的BUG,而且不象科学怪人那样狂妄自大且有自恋癖,所以在大富翁世界要比科学怪人受欢迎的多。只是偶尔喜欢恶作剧,例如当夜晚的班车上突然前排有人把脑袋旋转180度朝你拌鬼脸时,千万别被吓死,那一定就是它了,一个喜欢恶作剧的机器人。
奇奇的偶像科学怪人今日过生日了,他要赶去为他庆生。这样他就出门了,在去的途中发现礼物忘家里了,他必须回去取。虽然奇奇是个机器人,但脑子总是在着急的时候不好使了。这样他找来了你帮忙,他把地图里的数据给了你,你来帮帮他计算奇奇回到家去完礼物再赶去科学怪人的家的最短路程是多少~

Input

T<=10代表测试数据个数
每组测试数据第一行两个正整数N,M
N<=10000代表节点个数
M<=50000代表边的个数
然后是M行,每行三个整数U,V,W
1<=U<=N,1<=V<=N代表从U到V有一条长度为1<=W<=1e7的边(单向的)
然后是三个整数A,B,C
1<=A<=N,代表奇奇现在所处的位置
1<=B<=N,代表奇奇家所在的位置
1<=C<=N,代表科学怪人的家所在的位置

Output

输出奇奇要走的最短路程,数据保证一定有解,每组输出占一行

Sample Input

1 4 5 1 2 5 2 1 10 2 3 1 2 4 3 4 1 1 2 1 3

Sample Output

10

Mean:

analyse:

两次spfa,相加即得answer。

Time complexity:O(m*e)

Source code:

//Memory   Time
// 2556K    362MS
// by : Snarl_jsb
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<iomanip>
#include<string>
#include<climits>
#include<cmath>
#define MAXV 10010
#define MAXE 50010
#define LL long long
using namespace std;
int T,n,m,u,v,w;
int now,home,goal;
bool vis[MAXV];
LL dis[MAXV];
namespace Adj
{
struct Node
{
int to,next,w;
bool flag;
} edge[MAXE];
int top,head[MAXV];
void init()
{
top=1;
memset(head,0,sizeof(head));
}
void addEdge(int u,int v,int w)
{
edge[top].to=v;
edge[top].w=w;
edge[top].flag=1;
edge[top].next=head[u];
head[u]=top++;
}
}
using namespace Adj;
LL spfa(int sta,int en)
{
for(int i=1;i<=n;i++)
{
vis[i]=0;
dis[i]=LLONG_MAX;
}
queue<int>Q;
Q.push(sta);
vis[sta]=1;
dis[sta]=0;
while(!Q.empty())
{
int now=Q.front();
Q.pop();
vis[now]=0;
for(int i=head[now];i;i=edge[i].next)
{
int w=edge[i].w;
int son=edge[i].to;
if(dis[now]+w<dis[son])
{
dis[son]=dis[now]+w;
if(!vis[son])
{
Q.push(son);
vis[son]=1;
}
}
}
}
return dis[en];
}
void scan(int &x)
{
char c=getchar();
x=0;
while(!(c>='0'&&c<='9')) c=getchar();
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
}
int main()
{
scan(T);
while(T--)
{
Adj::init();
scan(n);
scan(m);
while(m--)
{
scan(u);
scan(v);
scan(w);
addEdge(u,v,w);
}
scan(now);
scan(home);
scan(goal);
LL ans=spfa(now,home);
ans+=spfa(home,goal);
cout<<ans<<endl;
}
return 0;
}

  

图论 --- spfa + 链式向前星 (模板题) dlut 1218 : 奇奇与变形金刚相关推荐

  1. DijKstra算法普通+堆优化链式向前星

    朴素版本 #include<bits/stdc++.h> using namespace std; const int maxn = 10010; const int inf = 0x3f ...

  2. 链式向前星(一个优秀的存储图的数据结构)

    在学习图的存储的时候,我们通常会有邻接矩阵和邻接表两种选择,邻接矩阵好写但效率低,邻接表不好写写但效率高,这里有一种优秀的数据结构,那便是用静态链表头插法实现的链式向前星. 先给出一下邻接矩阵 可以看 ...

  3. 迪杰斯特拉--链式向前星

    //算法-迪杰斯特拉 -链式向前星存边实现,加上优先队列 #include <iostream> #include <algorithm> #include <queue ...

  4. codeforces div3 D Circular Dance (链式向前星)

    题目链接: http://codeforces.com/contest/1095/problem/D 通过题意可知,每次输入的两个数一定相邻,所有只要对每次输入的两个数看作是边,通过向前星构建无向图, ...

  5. U81206:链式前向星模板题

    [题目来源] https://www.luogu.com.cn/problem/U81206 [题目描述] 链式前向星模板题. 读入n个点,m条边,以及flag.若flag==1,则图有向,否则无向. ...

  6. Day 7 A - Age of Moyu HDU 6386 | 最短路 | SPFA | 链式前向星

    松弛:原来用一根橡皮筋连接p和w两点,现在有一点v到w的路径更短,现在把橡皮筋w点的另一端p换成v点,这样缓解橡皮筋紧绷的压力,让其变得松弛. 来自:原博 关于SPFA算法 来自:原博 链式前向星 # ...

  7. spfa(链式前向星)+dijkstra(链式前向星)

    链式前向星 链式前向星可以存图, 它存图的方式是: 将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来 然后头节 ...

  8. 请柬(双向SPFA及SLF LLL优化法模板题)

    请柬 (双向SPFA模板题) (题目来源:Luogu.org) P1342 请柬 难度 普及+/提高 时空限制 1s / 128MB 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesi ...

  9. 前向星和链式前向星(详解+模板)

    前向星和链式前向星 参考博客:深度理解链式前向星 什么是前向星 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的 ...

最新文章

  1. go linux 源码编译环境,Linux 源码安装 GO 环境
  2. 时间戳的转换和星期转换
  3. Visual Studio2005无法启动web调试的真正原因
  4. 版本控制工具历史的10个里程碑
  5. 51Nod-1134 最长递增子序列【LIS】
  6. hive 如何将数组转成字符串_Hive 字符串操作[转]
  7. XStream 解析 XML 深入剖析
  8. android苹果模拟器哪个好,mac安卓模拟器哪个好用?为你推荐网易mumu模拟器
  9. 前淘宝工程师谈12306:做它比做淘宝难
  10. SpringMVC从request到controller过程详解
  11. 【山大智云】SeafileServer源码分析之CDC(基于内容长度可变分块)
  12. hazy的leetcode刷题笔记(一)
  13. html实现下拉跳转
  14. 睡地板的女高管,也被马斯克裁了!推特丧心病狂的第八轮裁员来了
  15. 易语言取php网页数据,易语言爬取网页内容方法
  16. 学生专用计算机怎么发出声音,计算机技巧-如何使显示器的内置扬声器发出声音...
  17. 欧姆龙服务器显示oE,在公网如何配置OE客户端
  18. 赛龙舟游戏html,赛龙舟最新版-赛龙舟游戏最新版预约v1.0-游戏宝手游网
  19. Arduino基础入门篇06—流动的LED灯
  20. TeamFlowy——结合Teambition与Workflowy提高生产力

热门文章

  1. java整数类型计算百分比
  2. centos安装pssh
  3. AirPods Max 如何充电和查看电池续航时间?
  4. 三目运算符的多层嵌套
  5. css.gg - 一套漂亮的纯 CSS 实现的免费开源图标库
  6. 设计师与客户:迁就难出好设计
  7. shell pwd 命令
  8. win10网络出现感叹号,但能正常上网
  9. 第10章 人口问题
  10. Nginx启动不了原因解决