洛谷 P 3371 单元最短路
题目描述
如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
输入输出格式
输入格式:
第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。
接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。
输出格式:
一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达点i,则最短路径长度为2147483647)
输入输出样例
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
0 2 4 3
说明
时空限制:1000ms,128M
数据规模:
对于20%的数据:N<=5,M<=15
对于40%的数据:N<=100,M<=10000
对于70%的数据:N<=1000,M<=100000
对于100%的数据:N<=10000,M<=500000
样例说明:

60分SPFA代码存档:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define MAXN 2147483647
#define N 10010
using namespace std;
struct node{
int u,v,w;
int next;
}e[];
int n,m,s,head[N],dis[N],ei;
bool exist[N];
void add(int u,int v,int w){
e[++ei].u=u;e[ei].v=v;e[ei].w=w;
e[ei].next=head[u];head[u]=ei;
}
queue<int> q;
int main()
{
scanf("%d%d%d",&n,&m,&s);
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(exist,false,sizeof(exist));
for(int i=,x,y,z;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
exist[s]=true;dis[s]=;q.push(s);
while(!q.empty()){
int p=q.front();q.pop();exist[p]=false;
for(int i=head[p];i;i=e[i].next){
int v=e[i].v;
if(dis[v]>dis[p]+e[i].w){
dis[v]=dis[p]+e[i].w;
if(!exist[v]){
q.push(v);
exist[v]=true;
}
}
}
}
for(int i=;i<=n;i++){
if(dis[i]==0x3f) printf("%d ",MAXN);
else printf("%d ",dis[i]);
}
return ;
}
head数组开大一点,就成90了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define MAXN 2147483647
#define N 10010
using namespace std;
struct node{
int u,v,w;
int next;
}e[];
int n,m,s,head[],ei;
long long dis[N];
bool exist[N];
void add(int u,int v,int w){
e[++ei].u=u;e[ei].v=v;e[ei].w=w;
e[ei].next=head[u];head[u]=ei;
}
queue<int> q;
int main()
{
scanf("%d%d%d",&n,&m,&s);
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(exist,false,sizeof(exist));
for(int i=,x,y,z;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
exist[s]=true;dis[s]=;q.push(s);
while(!q.empty()){
int p=q.front();q.pop();exist[p]=false;
for(int i=head[p];i;i=e[i].next){
int v=e[i].v;
if(dis[v]>dis[p]+e[i].w){
dis[v]=dis[p]+e[i].w;
if(!exist[v]){
q.push(v);
exist[v]=true;
}
}
}
}
for(int i=;i<=n;i++){
if(dis[i]==0x3f3f3f3f) printf("%lld ",MAXN);
else printf("%lld ",dis[i]);
}
return ;
}
洛谷 P 3371 单元最短路的更多相关文章
- 洛谷P2243 电路维修 [最短路]
题目传送门 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...
- 洛谷P1491 集合位置 [最短路,SPFA]
题目传送门 题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的高超,还记 ...
- 洛谷P1613 跑路(最短路+倍增)
P1613 跑路 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的 ...
- 洛谷P1346 电车【最短路】
题目:https://www.luogu.org/problemnew/show/P1346 题意:n个路口,每个路口有好几条轨道,默认指向给出的第一个路口. 如果要换到另外的轨道去需要按一次开关.问 ...
- 洛谷P1339 热浪【最短路】
题目:https://www.luogu.org/problemnew/show/P1339 题意:给定一张图,问起点到终点的最短路. 思路:dijkstra板子题. 很久没有写最短路了.总结一下di ...
- 洛谷P1629 邮递员送信 最短路-Djistra
先上一波题目qwq https://www.luogu.org/problem/P1629· 复习了一波 dijstra 的 priority_queue(优先队列)优化的写法 tips: 求单项路中 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 洛谷 P5304 [GXOI/GZOI2019]旅行者(最短路)
洛谷:传送门 bzoj:传送门 参考资料: [1]:https://xht37.blog.luogu.org/p5304-gxoigzoi2019-lv-xing-zhe [2]:http://www ...
- NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...
随机推荐
- 10048 - Audiophobia (Floyd)
Floyd的变形,本质是动态规划,路径分成的两个部分中取最大值作为该路径的答案,在所有可行路径之中选一个最小值. #include<bits/stdc++.h> using namespa ...
- 闭包和OC的block的本质
“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域). http://blog.csdn ...
- 一个制作Xcode5插件的模板
原Github地址:https://github.com/kattrali/Xcode5-Plugin-Template 安装将 本工成复制到~/Library/Developer/Xcode/Tem ...
- Schur 三角化定理的推论
将学习到什么 从 Schur 的酉三角化定理可以收获一批结果,在这一部分介绍重要的几个. 迹与行列式 相似矩阵具有相同的特征多项式, 从特征多项式一节中, 我们又知道,相似矩阵的迹以及行列式都是相 ...
- selenium-浏览器操作方法
前戏 浏览器都有哪些方法呢?最大化,设置浏览器窗口的大小,刷新,前进,后退等等,让我们来一一介绍 获取网站titie from selenium import webdriver from time ...
- 第1节 flume:13、14、更多flume案例一,通过拦截器实现不同类型的数据区分
1.6.flume案例一 1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.ng ...
- Bootstrap历练实例:点击激活的按钮
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- 计算机应用 office系列 常用术语英文
首先,Excel 办公室系列软件——Office series Software 微软——Microsoftware 电子表格 Excel 第一行称为标题栏——title bar 第二行称为菜单栏—— ...
- emoji等表情符号存mysql的方法
项目中需要存储用户信息(用户昵称有表情符号),自然就遇到了emoji等表情符号如何被mysql DB支持的问题 这里引用先行者博文:https://segmentfault.com/a/1190000 ...
- 控制mysql数字转换
在实际工作中我们常常需要将数字进行格式化,比如将12.0073233变为12.01,或把12变为12.00,或把12变为0000012,这种格式之间的转换总结如下: 一,浮点数的转换--直接设 ...