POJ 1511 spfa

邻接表实现 单源最短路径SPFA算法 poj1511 首先讲邻接表的实现,以前一直遇到题目都是用vector模拟,今天遇到一个题目vector超时,于是学习了用数组模拟实现邻接表,新学的数据结构,搞的不是很透彻,记录一下。 其实就是头插发,首先用一个结构体E记录节点的信息,指向那个节点,以及指向节点的权值等信息,给E结构体设置一个next,让它指向H数组,H数组初始化为-1,初始化为-1是为了方便判断某个点直接相连点是否找完了,自己还不是很透彻了, 阅读详情

题目大意:给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1)

解题思路:这个数据范围太大,明显的不能用floyd,dijstra,bellman-ford这些算法,用spfa的话也不能用邻接矩阵存,因为点太多了,所以采用spfa的邻接表存储搞定

稍微有点注意的地方是,来回之和只需要将所有的边反向再从1到所有点求最短路就是他们的最短回路

注意数据较大 使用long long

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;

const int maxn=1000005;
const ll inf=1LL<<60;
struct edge
{
	int v,k,next;
	void init(int tv,int tk,int tnext)
	{
		v=tv,k=tk,next=tnext;
	}
}e[2][maxn];
int link[2][maxn];
ll d[maxn],ans;
bool inque[maxn];
int ne,n;

void spfa(int c)
{
	memset(inque,0,sizeof(inque));
	int u,v,p;
	for(p=1;p<=n;p++)
	{
		d[p]=inf;
	}
	queue<int> q;
	q.push(1);
	inque[1]=true;
	d[1]=0;
	while(!q.empty())
	{
		u=q.front();
		q.pop();
		inque[u]=false;
		for(p=link[c][u];p!=-1;p=e[c][p].next)
		{
			v=e[c][p].v;
			if(d[v]>d[u]+e[c][p].k)
			{
				d[v]=d[u]+e[c][p].k;
				if(!inque[v])
				{
					q.push(v);
					inque[v]=true;
				}
			}
		}
	}
}

int main()
{
	int T,m;
	scanf("%d",&T);
	while(T--)
	{
		ne=0;
		memset(link,-1,sizeof(link));
		int i,u,v,k;
		scanf("%d%d",&n,&m);
		for(i=0;i<m;i++)
		{
			scanf("%d%d%d",&u,&v,&k);
			e[0][ne].init(v,k,link[0][u]);
			link[0][u]=ne;
			e[1][ne].init(u,k,link[1][v]);
			link[1][v]=ne++;
		}
		ans=0;
		spfa(0);
		for(i=1;i<=n;i++)
		{
			ans+=d[i];
		}
		spfa(1);
		for(i=1;i<=n;i++)
		{
			ans+=d[i];
		}
		printf("%lld\n",ans);
	}
	return 0;
}



计算机毕设:线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行 线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行 阅读详情

相关推荐

ui(new Ui::MainWindow)的解析

Ui命名空间的变量名,和默认空间的变量名虽然一样,但实际是两个不同的东西。所以构造函数中调用MainWindow是没问题的,因为它不是在调用自身,而是在调用其他命名空间下的另一个同名的MainWindow类。这里使用C++的成员初始化列表语法,初始化成员变量指针ui,可这里有个问题,在MainWindow的构造函数中new 一个MainWindow,这又调用一下MainWindow的构造函数,这岂不是会死循环?ui_mainwindow.h文件。mainwindow.h文件.

sinat_31608641的博客 1194

poj1511解题报告(SPFA算法)

题目大意:给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1) 解题思路:使用spfa+邻接链表来做,因为要求来回的最短距离之和,所以先用spfa求一遍最短路,再把每条边反过来(a到b的边变成b到a的边)再用spfa求一遍最短路。 注意:结果要用long long 来储存 #include #include #include #include #incl

h123120的专栏 832

无限维李代数局部与2-局部1/2-导子:从概念到Witt代数实例解析

在抽象代数与数学物理中,李代数是描述对称性的基本结构,而导子则是刻画其微分性质的核心算子。从经典的导子概念出发,通过引入“局部”与“分数阶”两个关键推广,形成了局部导子、2-局部导子以及1/2-导子等重要研究方向。这些推广不仅深化了对无限维李代数(如Witt代数、Virasoro代数)复杂结构的理解,其研究方法和结论也为共形场论、可积系统等物理理论提供了数学基础。本文聚焦于无限维李代数上局部与2-局部1/2-导子的系统研究,通过拆解核心概念、剖析典型代数结构,并以Witt代数为实例,详细演示了从全局1/2-

weixin_34072296的博客 393

POJ1511 SPFA Invitation Cards

POJ1511题目连接题意代码 题目连接 [POJ1511](https://vjudge.net/problem/POJ-1511) 题意 就是说从节点1出发然后问从节点1出发到其它各点的花费与其它各点到节点1之和最小 SPFA可以之结果,但是如果用kuangbin的板子,采用向量(邻接表)的话会超时,应当用链式前向星来作为 数据结构 如果链式前向星不太清楚,可以参考以下博客 [链式前向星](https://blog.youkuaiyun.com/weixin_44758733/article/details/10

Bran 200

ACM论文LaTeX模板解析(三)| 文章顶部信息(Top matter))Part 1

文章顶部信息(Top matter))Part 1,文章类型、作者信息等

FreshManInC的博客 4853

计算机图形学入门30:动画与模拟介绍

计算机图形学入门,动画与模拟,物理模拟,质点弹簧系统,运动学,粒子系统,动作捕捉。

YanisWu的博客 1485

POJ 1511 Invitation Cards【SPFA】

http://poj.org/problem?id=1511POJ 1511 Invitation Cards大意:求有向图中从源点到每个节点的往返距离和分析: 1.根据题意建立两幅图,分别对应于正向图和反向图 2.分别对正向图和反向图求从源点即题中的1结点出发求単源最短路径, 3. 由2易得,正向图中求得的dis[i]为s到i的最短路,反向图中求得的dis[i]为i到s的最...

a48634331的博客 158

VTK基础教程(1)- vtkPolyData 介绍

目录 VTK的编译与环境搭建 VTK一般渲染流程 VTK数据类型-vtkPolyData 使用vtk自带的多边形数据 使用自己创建的数据 添加顶点颜色 添加面颜色 VTK的编译与环境搭建 这部分目前已经有了大佬做了成熟的傻瓜式配置,大家可以参考这篇文章:VTK+VS2019(或其他版本均可) 傻瓜式一站式 配置_Nancy_fairy的博客-优快云博客_vs2019 vtk VTK一般渲染流程 这部分的介绍也很多,大家可以参考这篇文章:VTK笔记-了解VTK_黑山老妖的博客.

qq_35769071的博客 9056

poj 1511(SPFA+邻接表)

题目链接:http://poj.org/problem?id=1511 思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图。1000000个点和1000000条边,一开始用SPFA+vector怎么都是TLE,然后换成邻接表就过了=.=。 1 #include 2 #include 3 #include

几百个教授的专栏 435

基于YOLOv8的城市违建识别系统:从数据集构建到UI界面实现

YOLOv8是Ultralytics公司于2023年推出的最新一代YOLO(You Only Look Once)系列目标检测算法。更高效的骨干网络设计改进的锚框机制更精确的损失函数支持分类、检测、分割等多任务YOLOv8特别适合像违建识别这样的实时检测任务,能够在保持高精度的同时实现快速推理。

YOLO 675

数据分片的三种方式:哈希、一致性哈希、按照数据范围分片

数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。三种常用的数据分片方式:1. 哈希分片2. 一致性哈希分片(Consistent Hash)3. 按照数据范围分片(Range Based)数据分片的应用场景:1. 数据库扩展2. 分布式缓存对集群部署多个缓存节点,提高缓存的处理能力。

wjianwei666的专栏 1135

[POJ 1511]Invitation Cards[链式前向星][SPFA]

题目链接:[POJ 1511]Invitation Cards[链式前向星][SPFA] 题意分析: 每天从点1都会有n - 1个孩子需要到点2 ~ n去做事。现在给出a - > b的费用,问,每天从2 ~ n这些点来回一趟最少需要多少钱? 解题思路: 考虑本题边的个数和点的个数均 <= 1e6。可以使用SPFA进行操作,使用链式前向星存储图。这里处理来回距离有一个小技巧,spfa可以求得点

闲停 755

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3506

POJ1511 Invitation Cards —— 最短路spfa

题目链接:http://poj.org/problem?id=1511 Invitation Cards Time Limit:8000MS Memory Limit:262144K Total Submissions:29286 Accepted:9788 Description In the age of...

alince20008的博客 153

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POJ 1511 Invitation Cards(SPFA)

POJ 1511 Invitation Cards(SPFA) http://poj.org/problem?id=1511 题意:有一个N个点的有向图,点的编号从1到N.现在要你求从1号点到所有其他点的最短距离S1+ 从所有其他点到1号点的最短距离S2的值. 分析:        求其他点到1号点的最短距离直接建立原图的反向图然后求最短路径即可.        直接利用SPFA求解.注

code 965

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj 1511 spfa水题

poj 1511 Invitation Cards

Resurgence_zc的博客 850

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ1511Invitation Cards(国产算法SPFA)

题目大意:给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1) 解题思路:这个数据范围太大,明显的不能用floyd,dijstra,bellman-ford这些算法,用spfa的话也不能用邻接矩阵存,因为点太多了,所以采用spfa的邻接表存储搞定 稍微有点注意的地方是,来回之和只需要将所有的边反向再从1到所有点求最短路就是他们的最短回路,而且这个题

晚风中的自由 563

poj1511(第一道spfa)

题目链接:http://poj.org/problem?id=1511                  题目意思:在一个城市中,有P(1-1000000)个站点,并有Q(1-1000000)条路每条路(单向的)连接其中的两个站点,现在在1号站点,要请P-1个员工去每个站点传递一张单子,现在问你这些员工从1号站点出发去每个站点并且返回到1号站点要走过的最短路程!

鸟 的 天 空 714

poj1511 最短路 spfa

// poj1511 最短路 spfa // // Bellman-Ford 队列优化 // // 留个spfa模板,精髓就是不断松弛,并将可能会影响 // 结果的点,如果在队列中不用加,不在就加入。 #include #include #include #include #include typedef long long ll; using name

TIMELIMITE的专栏 716

poj 1511 Invitation Cards && poj 3268 Silver Cow Party (spfa)

两道题类似,这只给出1511的代码。 //poj 1511 /*题意:p个结点,q条单向的路径,1是起点,求1到任意点,并从该点回到1的花费和要最小。 1.点太多了,dijkstra和floyd都不行。2.spfa,注意求返程时,只需把所有路径的起点和终点颠倒。 3.数据很大,不用int,用long long 或者__int64; */ #include #include #i

qqspeed 736

POJ 1511 双向单源最短路 SPFA+邻接表

最近在复习最短路算法 然后今天在看差分约束系统的时候看到了这一题 POJ 1511 题目的大意: 给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1) 题目意思很简单,但是数据规模很大,当时知道数据规模很大,用一般的方法肯定会超时或者其他错误,但是还是用基础的方法写了一遍。 还有就是一地方需要注意,就是这题求的是双向单源,所以还需要考虑一下,处理双向的问题

Hayden‘s Blog 602

POJ 1511 SPFA 模板

/*--------------------- #headfile--------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include /*------------

__ElemenT 489

poj 1511 Invitation Cards spfa 邻接矩阵

题目链接:   http://poj.org/problem?id=1511 题目大意:   这道题目比较难理解,我读了好长时间,最后还是在队友的帮助下理解了题意,大意就是,以一为起点,求从一到其他各点的最短回路总和。 解题思路:   解决这个题目有几个容易错的,解决了离ac就不远了^_^。   1:数据范围是1<=边数<=顶点数<=1000000,所以不能用邻接矩阵...

weixin_30242907的博客 125

POJ 1511 SPFA

题目链接 题意:要求1号点到各点的最短路之和,然后再求各点到1号点的最短路之和。 SPFA邻接表存储 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <vector> using namespace std; co...

flyzer的博客 206

POJ - 1511 Invitation Cards(Dijkstra,Spfa双向最短路)

#include <stdio.h> #include <string.h> #include <queue> using namespace std; const int Max = 1000000+10; int head1[Max],head2[Max],vis[Max],dist[Max]; struct Node { int v; int w; int next; }edge1[Max],edge2[Max]; int n,m,num1,num2; voi

00后的博客 217
上一篇: poj 2762(弱连通:强连通+缩点+拓扑排序)
下一篇: HDU 4394 bfs
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值