图论 --- spfa + 链式向前星 (模板题) dlut 1218 : 奇奇与变形金刚
1218: 奇奇与变形金刚
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 130 Solved: 37
[Submit][Status][Web Board]
Description
Input
Output
输出奇奇要走的最短路程,数据保证一定有解,每组输出占一行
Sample Input
Sample Output
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 : 奇奇与变形金刚相关推荐
- DijKstra算法普通+堆优化链式向前星
朴素版本 #include<bits/stdc++.h> using namespace std; const int maxn = 10010; const int inf = 0x3f ...
- 链式向前星(一个优秀的存储图的数据结构)
在学习图的存储的时候,我们通常会有邻接矩阵和邻接表两种选择,邻接矩阵好写但效率低,邻接表不好写写但效率高,这里有一种优秀的数据结构,那便是用静态链表头插法实现的链式向前星. 先给出一下邻接矩阵 可以看 ...
- 迪杰斯特拉--链式向前星
//算法-迪杰斯特拉 -链式向前星存边实现,加上优先队列 #include <iostream> #include <algorithm> #include <queue ...
- codeforces div3 D Circular Dance (链式向前星)
题目链接: http://codeforces.com/contest/1095/problem/D 通过题意可知,每次输入的两个数一定相邻,所有只要对每次输入的两个数看作是边,通过向前星构建无向图, ...
- U81206:链式前向星模板题
[题目来源] https://www.luogu.com.cn/problem/U81206 [题目描述] 链式前向星模板题. 读入n个点,m条边,以及flag.若flag==1,则图有向,否则无向. ...
- Day 7 A - Age of Moyu HDU 6386 | 最短路 | SPFA | 链式前向星
松弛:原来用一根橡皮筋连接p和w两点,现在有一点v到w的路径更短,现在把橡皮筋w点的另一端p换成v点,这样缓解橡皮筋紧绷的压力,让其变得松弛. 来自:原博 关于SPFA算法 来自:原博 链式前向星 # ...
- spfa(链式前向星)+dijkstra(链式前向星)
链式前向星 链式前向星可以存图, 它存图的方式是: 将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来 然后头节 ...
- 请柬(双向SPFA及SLF LLL优化法模板题)
请柬 (双向SPFA模板题) (题目来源:Luogu.org) P1342 请柬 难度 普及+/提高 时空限制 1s / 128MB 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesi ...
- 前向星和链式前向星(详解+模板)
前向星和链式前向星 参考博客:深度理解链式前向星 什么是前向星 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的 ...
最新文章
- go linux 源码编译环境,Linux 源码安装 GO 环境
- 时间戳的转换和星期转换
- Visual Studio2005无法启动web调试的真正原因
- 版本控制工具历史的10个里程碑
- 51Nod-1134 最长递增子序列【LIS】
- hive 如何将数组转成字符串_Hive 字符串操作[转]
- XStream 解析 XML 深入剖析
- android苹果模拟器哪个好,mac安卓模拟器哪个好用?为你推荐网易mumu模拟器
- 前淘宝工程师谈12306:做它比做淘宝难
- SpringMVC从request到controller过程详解
- 【山大智云】SeafileServer源码分析之CDC(基于内容长度可变分块)
- hazy的leetcode刷题笔记(一)
- html实现下拉跳转
- 睡地板的女高管,也被马斯克裁了!推特丧心病狂的第八轮裁员来了
- 易语言取php网页数据,易语言爬取网页内容方法
- 学生专用计算机怎么发出声音,计算机技巧-如何使显示器的内置扬声器发出声音...
- 欧姆龙服务器显示oE,在公网如何配置OE客户端
- 赛龙舟游戏html,赛龙舟最新版-赛龙舟游戏最新版预约v1.0-游戏宝手游网
- Arduino基础入门篇06—流动的LED灯
- TeamFlowy——结合Teambition与Workflowy提高生产力