P3371 【模板】单源最短路径(弱化版)( spfa )

【模板】单源最短路径(弱化版) 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步。这个弱化版的数据较弱,普通Dijkstra也能过,但P4779就很怪,要用堆优化…如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。使用c++STL优先队列,用c++STL vector存图。使用Dijkstra要注意的是,它是一种单源最短路算法…,分别表示点的个数、有向边的个数、出发点的编号。个点的最短路径,若不能到达则输出。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

思路

spfa

代码
// Problem: P3371 【模板】单源最短路径(弱化版)
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3371
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define pb push_back
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,m,s;
int head[maxn],tot,dis[maxn];
bool vis[maxn];
struct node
{
	int to;
	int w;
	int next;
}edge[maxn];

void init()
{
	memset(head,-1,sizeof(head));
	for(int i=0;i<=1e4;i++)
		dis[i]=2147483647;
	tot=0;
}

void add(int u,int v,int w)
{
	edge[tot].to=v;
	edge[tot].w=w;
	edge[tot].next=head[u];
	head[u]=tot++;
}

void spfa()
{
	queue<int>q;
	vis[s]=1;
	dis[s]=0;
	q.push(s);
	while(q.size())
	{
		int now=q.front();
		q.pop();
		vis[now]=0;
		for(int i=head[now];i!=-1;i=edge[i].next)
		{
			int v=edge[i].to;
			if(dis[v]>dis[now]+edge[i].w)
			{
				dis[v]=dis[now]+edge[i].w;
				if(!vis[v])
				{
					vis[v]=1;
					q.push(v);
				} 
			}
		}
	}
}

int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	init();
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		int x,y,w;
		cin>>x>>y>>w;
		add(x,y,w);
	}
	spfa();
	for(int i=1;i<=n;i++)
		cout<<dis[i]<<' ';
    return 0;
} 
【代码超详解】洛谷 P3371 P4779 单源最短路径(Dijkstra 算法 · 模板题) 一、题目描述 P3371 【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入格式 第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发... 阅读详情

相关推荐

【小程序】支付宝直付通解决方案

支付宝直付通是支付宝为小程序提供的一种支付解决方案,可以实现小程序中直接使用支付宝进行支付。以上是一个简单的支付宝直付通解决方案及相关代码示例。具体的使用还需要根据自己的业务需求进行定制化开发和调整。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1281

洛谷 P3371 【模板】单源最短路径

题目描述如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。输入输出格式输入格式: 第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。输出格式: 一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达

liangzihao1的博客 968

声发射传感器的工作原理是什么?

介绍声发射传感器的工作原理。

qq_39948394的博客 9246

洛谷_P3371 【模板】单源最短路径(弱化版)_SPFA

洛谷_P3371 【模板】单源最短路径(弱化版)_SPFA

这题AC再睡 314

一篇关于轴承故障诊断的综述

在设备的故障检测中,有约30%-40%的设备故障是由轴承故障引起的,因此本文将列举有关检测轴承故障使用到的相关数据集,模型和算法。 数据集 现有的数据集,普遍由固定在电机马达上的两个震动检测器获得,并根据需要,分离震动数据在时域和频域上的特征以供网络模型学习。 不同的数据集,区别在于,检测的马达转速不同,环境不同,取样频率不同,一段样本的时长不同等等 (1)Case Western Reserve University (CWRU) Dataset 该数据集拥有多种数据,测量的时候,通过改变轴承.

weixin_42036144的博客 2万+

Jetson Nano之CSI摄像头操作方法

jetson端csi摄像头的应用方法

ZONGXP的博客 1万+

【c++图论】P3371 【模板】单源最短路径

图论/洛谷P3371单源最短路径详解

贤鱼的博客 300

uniapp - 实现免费OCR文字识别方案,用户上传图片后进行扫描识别获取图片上的文字,uniApp纯前端做图片OCR识别——无需服务器进行OCR识别插件(不需要依赖任何SDK或第三方API服务)

uniapp实现orc识别免费的插件识别不花钱,无需第三方OCR文字识别API,uniApp拍照或者选择图片免费识别,纯前端不需要服务器,Uniapp提取图片上的文字,本地ocr识别技术,uni-app图片OCR识别文本,uniapp有没有免费的ocr识别组件,uniapp前端实现文字识别,身份证识别,营业执照识别 (兼容APP、H5、小程序 不需要任何SDK)跨端无SDK方案:Uniapp实现OCR文字,离线OCR识别,uniapp tesseract.js实现文字识别,uniapp文字识别无需依赖sdk

🏆 前端领域优质创作者 4249

P3371 【模板】单源最短路径(弱化版)(spfa模板)

题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 #include<bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; const int N = 1e4 + 10, M = 5e5 + 10, len = 2147483647; int n, m, s, h[M], cnt, dis[N...

Endeavor_G的博客 259

金融领域必备:Python爬虫+AI量化分析,爬取股票数据并实现智能交易策略

本文通过Python爬虫+AI量化分析的组合,实现了从股票数据爬取到智能交易策略的全流程。免费获取全维度金融数据(行情、财务、舆情),替代付费终端;用LSTM模型捕捉股价的时间序列规律,提升预测精度;基于Backtrader实现策略回测与优化,保证策略的有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1371

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

洛谷P3371 【模板】单源最短路径(弱化版)(SPFA解法)

题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入输出格式 输入格式: 第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和...

anshuo0835的博客 173

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

P3371 【模板】单源最短路径(弱化版)(C++_SPFA算法_链式向前星)

题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入格式 第一行包含三个整数 n,m,s,分别表示点的个数、有向边的个数、出发点的编号。 接下来 m 行每行包含三个整数 u,v,w,表示一条 u→vu \to vu→v 的,长度为 w 的边。 输出格式 输出一行 ...

ccql's Blog 662

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【洛谷】P3371 【模板】单源最短路径(弱化版)(spfa求单源点最短路)

解题思路:用spfa算法处理单源点最短路,除非边有负权值否则不推荐使用,因为在处理稠密图的时候时间复杂度容易退化成O(nm)可能导致超时,如果边没有负权值都采用dij+堆优化的方式处理问题,这种spfa+bfs的方法就当做处理边有负权值最短路的模板吧 这个题目卡了我min()这个函数,我表示心态还是很崩的 下面附上ac代码 #include <iostream> #include <cstdio> #include <cstdlib> #include...

_C9的博客 304

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【最短路径问题】洛谷 P3371 单源最短路径(弱化版)

图论SPFA算法问题,例题 洛谷P3371 单源最短路径 含代码详解

wayua的博客 2630

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【洛谷P3371】【模板】单源最短路径(弱化版) 解题报告

让人最头大的一集。

Engels_Si_Fish的博客 1154

洛谷 P3371 【模板】单源最短路径(弱化版)spfa算法 最短路

题目链接: https://www.luogu.org/problemnew/show/P3371 思路: 1:本题数据比较水 2:spfa算法 #include<bits/stdc++.h> using namespace std; const int maxn=10001; vector<pair<int,int> >e[maxn]; int ...

aiwo1376301646的博客 382

【模板】单源最短路径(弱化版)(洛谷P3371)

数组大小题目中N<=10^4,但 M<=5*10^5。邻接表h数组开N大小,但vtexnxtwt数组必须开M大小。SPFA 代码中最容易把边数组开小导致 RE。溢出问题虽然最终的最短路可能在int范围内,但在计算dis[u]+w的瞬间,可能会溢出int(如果dis[u]本身就是接近 21亿的INF)。建议在比较时强转。一句话总结:非负权图无脑用 Dijkstra (堆优化),负权图用 SPFA (注意防环),小图多源用 Floyd。

布心老混子 所有代码均老混子本人远古手搓 易错点均为学生真实场景 博客文章部分借助ai生成 1168

P3371 【模板】单源最短路径(弱化版)【洛谷】

【模板】单源最短路径(弱化版): 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入格式 第一行包含三个整数 n,m,sn,m,s,分别表示点的个数、有向边的个数、出发点的编号。 接下来 mm 行每行包含三个整数 u,v,wu,v,w,表示一条 u \to vu→v 的,长度为 ww 的边。 输出格式 输出一行 nn 个整数,第 ii 个表示 ss 到第 ii 个点的...

蒟蒻こんにゃく 343

洛谷 P3371【模板】单源最短路径(弱化版)题解

【模板】单源最短路径(弱化版) 题目 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入 第一行包含三个整数 n,m,sn,m,sn,m,s ,分别表示点的个数、有向边的个数、出发点的编号。 接下来 m 行每行包含三个整数 u,v,wu,v,wu,v,w,表示一条 u→vu→vu→v 的,长度为 www 的边。 输出 输出一行 n 个整数,第 i 个表示 s 到第 i 个点...

Y的博客 374

P3371 【模板】单源最短路径(弱化版)

题目:P3371 【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入输出格式 输入格式: 第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分...

Pikachu的博客 287

洛谷 P3371 【模板】单源最短路径(弱化版)【最短路】【spfa】

洛谷 P3371 【模板】单源最短路径(弱化版)【最短路】【spfa】

Derrickhang的博客 569

P3371 【模板】单源最短路径(弱化版) spfa

P3371 【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 输入输出格式 输入格式: 第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分...

唐大帅 278

P3371 【模板】单源最短路径(弱化版) 题解

原题链接 简要题意: 给定一张有向图,求从源点开始,向各点的最短路(无负权)。(所谓的“单源最短路径”) 显然,如果你第一次见这种最短路的模板,你可能会用 记忆化搜索 来解决。 但是很遗憾,记忆化搜索的 “记忆化” 在图中很难得到有效体现;还是会稳稳的 TLE\texttt{TLE}TLE. 为了验证记忆化搜索的错误性,本人分析一下。 对于当前点向外扩展,如果已有答案比现有要优,则更新答案。 时间...

bifanwen的博客 668

洛谷P3371 【模板】单源最短路径(弱化版)

对于 100% 的数据:1≤n≤10^4,1≤m≤5×10^5,1≤u,v≤n,w≥0,∑w<231,保证数据随机。输出一行 n 个整数,第 i 个表示 s 到第 i 个点的最短路径,若不能到达则输出 2^31−1。接下来 m 行每行包含三个整数 u,v,w,表示一条 u→v 的,长度为 w 的边。对于 70% 的数据:1≤n≤1000,1≤m≤10^5;对于 40% 的数据:1≤n≤100,1≤m≤10^4;对于 20% 的数据:1≤n≤5,1≤m≤15;对于真正 100% 的数据,请移步。

wxz_y的博客 550
上一篇: 计算机算法设计与分析第一章思维导图
下一篇: P4779 【模板】单源最短路径(标准版)( dijkstra )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值