PKU 1511 Invitation Cards (SPFA+邻接表)

ssm快递柜管理系统毕业设计程序 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有说明。如有不会运行源代码或定制私信。 立即下载

题目链接:点击打开链接

        题目需要求从原点到所有点的最短距离之和和所有点到原点的最短距离之和,在求所有点到原点最短距离的时候用到了一个技巧:即把图反向,求原点到所有其他点的最短距离,这样用一次SPFA就可以将所有点到原点的最短距离求出来了。

 

        另外也没什么好说的,纯SPFA。另外用优化到VlogE的dijkstra貌似也能过,有空的时候再写个。

 

代码如下:

 

#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <queue>
using namespace std;

#define MAX 1000009
#define INF 1<<30
struct ENode 
{
	int to, cost, next;
} enode[MAX * 4];

int NE = 0;
int OriginHead[MAX], RevHead[MAX];
int dist[MAX];

void insertEdge( int from, int to, int cost )
{
	enode[NE].cost = cost; enode[NE].to = to; enode[NE].next = OriginHead[from]; OriginHead[from] = NE++;
	enode[NE].cost = cost; enode[NE].to = from; enode[NE].next = RevHead[to]; RevHead[to] = NE++;
}

void initDist( int n )
{
	for (int i=0; i<=n; i++) dist[i] = INF;
	dist[1] = 0;
}

int inQueue[MAX];
queue<int> Q;
void SPFA( int *Head )
{
	inQueue[1] = 1;
	Q.push(1);
	while ( ! Q.empty() )
	{
		int q = Q.front();
		Q.pop();
		inQueue[q] = 0;
		for ( int i=Head[q]; i!=-1; i=enode[i].next )
		{
			int e = enode[i].to;
			if ( dist[q] + enode[i].cost < dist[e] ) 
			{
				dist[e] = dist[q] + enode[i].cost;
				if ( !inQueue[e] )
				{
					inQueue[e] = 1;
					Q.push( e );
				}
			}
		}
	}
}

long long getTotal( int n )
{
	long long ret = 0;
	for (int i=2; i<=n; i++)
		ret += dist[i];
	return ret;
}

int main( )
{
	int T;
	cin >> T;
	
	while( T-- )
	{
		int n, m;
		scanf("%d%d", &n, &m);

		memset( OriginHead, -1, sizeof(OriginHead) );
		memset( RevHead, -1, sizeof(RevHead) );
		NE = 0;
		for (int i=0; i<m; i++)
		{
			int from, to, cost;
			scanf( "%d%d%d", &from, &to, &cost );
			insertEdge( from, to, cost );
		}

		initDist( n );
		memset( inQueue, 0, sizeof(inQueue) );
		SPFA( OriginHead );
		long long int ans = 0;
		ans += getTotal( n );

		//cout << ans << endl;
		initDist( n );
		memset( inQueue, 0, sizeof(inQueue) );
		SPFA( RevHead );
		ans += getTotal( n );

		cout << ans << endl;
	}

	return 0;
}


 

大疆司空 2 私有化部署:FH2、Terra、4G 三大服务区别详解 摘要: 司空2私有版包含三大模块:FH2(核心平台,必选)、Terra(建模算力,需NVIDIA显卡)、4G(内网图传)。FH2是基础,支持设备管理与任务调度;Terra适用于测绘建模场景,依赖GPU算力;4G模块保障复杂环境下的图传稳定性,适合纯内网部署。选择逻辑:先部署FH2,再按需添加Terra(需显卡)或4G(需内网支持),避免资源浪费。 阅读详情

相关推荐

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

寄存柜程序模拟(C语言)

超市寄存柜简要程序

Daskyol_cc的博客 1470

VSCode + Copilot下:配置并使用 DeepSeek

以下是关于在中,通过插件配置并使用系列模型 () 的完整汇总指南。

jerwey的博客 1万+

【程序设计与实践】实验四:自动寄存柜

【程序设计与实践】实验四:自动寄存柜 某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器 顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条 如果没有空闲的箱子,则提示“本柜已满”。 当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就会自动打开,顾客取走物品后,关上门。 输入数据时,可先输入寄存箱总数n, 再由用户选择是“投硬币”还是“输密码”。 如果选择“投硬币”,则只

As_sBomb的博客 5408

cellchat安装

cellchat

m0_65188455的博客 5448

解密高并发系统的瓶颈:五大解决方案

在互联网应用中,高并发是指在短时间内同时有大量的用户访问一个网站或服务,造成系统压力过大,导致服务器宕机或服务停止响应的情况。高并发是互联网应用面临的一个重要问题,需要采取一系列措施来解决。负载均衡、缓存、数据库优化、异步处理和分布式架构是解决高并发问题的主要方法。在实际应用中,需要根据具体情况选择不同的方法来解决高并发问题。在高并发情况下,使用负载均衡是解决问题的一种常见方法。负载均衡可以通过将请求分配到多个服务器上,从而减少单个服务器的负载。这可以通过硬件设备或软件实现。

BUG制造者:图图 <p>这是一个P标签</p> 3904

超市密码箱c语言程序,超市存包系统C语言.doc

超市存包系统C语言课 程 设 计课程名称C语言高级程序成员2015——2016学年 第2学期目录所选题目与要求——————————————————1问题分析—————————————————————13.算法设计—————————————————————1程序源代码————————————————————35.运行效果—————————————————————66.研究总结———————————...

weixin_29924799的博客 892

模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真)

本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。

weixin_42531128的博客 375

PKU1511(Invitation Cards)最短路径-邻接表+SPFA算法

/****************************************************** 题目大意: 弱菜英语又是渣渣,题意是对着测试数据连猜带蒙出来的; 在一个有向图中,要求顶点1到其他的所有顶点往返的总共的最小花费; 另外给出的数据量略大,顶点数和边数都是1000000的范围; 算法分析: 这是一个最短路径问题; 由于数据范围很大,用邻接矩阵和dijkstra很可能超时

始往流离,终彼成章。 1586

第11.4节 混合储能系统能量管理

混合储能系统(HESS)的能量管理策略采用分层架构实现多时间尺度优化:调度层(小时级)进行经济优化,协调层(秒级)基于频率分解分配功率,执行层(毫秒级)实现快速跟踪。深度强化学习(DRL)方法通过定义状态空间、动作空间和多目标奖励函数,能有效处理系统不确定性和多目标优化问题。HESS性能评估需综合技术指标(如调节性能Kp值、设备寿命指标)和经济指标(净现值NPV、平准化储能成本LCOS),并遵循"建模-仿真-实验"的闭环流程。

技术工作者 246

Android开发工程师面试问题与参考答案

这是一份Android开发工程师职位面试指南,主要针对自研OS开发岗位。岗位要求3年以上独立开发经验,熟悉Android平台UI设计、四大组件和Java基础。面试问题覆盖五大核心领域:基础知识、开发经验、技术深度、问题解决和性能优化。文章提供了典型面试问题及专业参考答案,帮助应聘者准备关键技术点,如多线程处理、HashMap与ConcurrentHashMap区别、Handler机制等。同时建议应聘者结合项目经验展示优化能力,并注意公司提供完善的薪酬福利和团队文化。

郑伟强dev的专栏 893

【图论】【最短路】 pku1511 Invitation Cards

【题目】:Invitation Cards【类型】:图论【难度】:中等【来源】:pku1511【关键字】:SPFA【题目大意】:给N个点的路径信息,给定一个点作为起点,求该点到每个点再回来总路程最小值。 --------------------------------------------------------------------------------------

mofixroot的专栏 603

【总目录】AUTOSAR精进之路专栏介绍及内容目录持续更新...

本专栏系统讲解AUTOSAR汽车电子开发技术,包含Eth/OS/Can/Lin等协议栈、MCAL驱动、功能安全等核心模块。内容基于实际项目经验,从概念原理到工程配置、特殊需求实现及问题排查进行深入剖析。重点涵盖TC3xx芯片平台开发、多核OS、网络管理、存储协议栈等难点问题,提供100+篇原创技术文章。专栏采用付费模式,保证内容完整性和持续更新,并提供专业答疑服务。适合汽车电子工程师系统学习AUTOSAR开发技术。

qq_36056498的博客 6510

[最短路spfa]pku1511-Invitation Cards

http://acm.pku.edu.cn/JudgeOnline/problem?id=1511 Invitation CardsTime Limit: 8000MS Memory Limit: 262144KTotal Submissions: 5784 Accepted: 1616DescriptionIn th

幻想の天地 713

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pku 1511 Invitation Cards

一道好题,练习静态表(邻接矩阵的数组开不下),没写过静态表,参考http://www.cnblogs.com/cykun/archive/2011/01/19/1939542.html 写的,改用stl的queue写了。 思路比较简单,有向边建立的静态表要注意反向处理,然后把1到各点和各点到1的距离求和即可:spfa+静态表 #include <iostream>#in...

difu7962的博客 162

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pku 1511 Invitation Cards (SPFA 和 dijkstra+优先级队列优化)

<br />简单的最短路题目,只需建两次图,分别调用单源最短路算法即可。<br /> <br />但是由于数据量较大,所以需要用邻接表存储,以及对普通算法进行些优化。<br /> <br />注意最后的求和需要用long long型变量存储<br /> <br />分别用SPFA  和  加了优先级队列的dijkstra写了一遍,效率差不多,用的STL的priority_queue,如果手写堆的话应该可以更快。<br /> <br />SPFA版本:1511Accepted33016K1750MSG++23

Hewie的专栏 1119

pku 1511 - invitation cards (spfa)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1511题目描述:求出顶点1到其它n-1个点的最短往返路径长度和!路径的往返要分开处理。1:对于“往”,只需对输入数据,构建邻接表,调用spfa函数求最短路径。2:对于“返”,对输入数据的边进行反向构建邻接表。再对顶点1求最短路径,即可求出返的最短路径和!由于数据太BT,顶点数达到1000

422

pku1511 Invitation Cards

http://poj.org/problem?id=1511 图论,最短路,SPFA 求所有点到1 1 #include <stdio.h> 2 #include <string.h> 3 #include <queue> 4 #define N 1000100 5 6 using namespace std; 7 8...

weixin_30469895的博客 104

pku 1151 Invitation Cards(单源最短路径 SPFA)

<br /> <br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1511<br /> <br />题目大意:在有向图中有n个结点,求从开始结点S(题中默认为1)到各其它各结点的距离和dist1和其它各结点到起点S(1)的距离和dist2之和sum最小.<br /> <br />解题思路:这道题点跟边都非常的大,达到1000000,所以就不能用Dj算法啦(因为只会朴素的Dj),就用SPFA来做啦,构建两个邻接表,正向的list1,反向的list2。起点到其他

话别深秋 964

pku 1511 Invitation Cards(最短路径)

Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16309   Accepted: 5310 Description In the age of television, not many people attend theat

街角的花街糖 742

投币式自动寄存柜

#include<stdio.h> #include<ctype.h> #include<string.h> #include<time.h> #include<stdlib.h> int main(){ int n,a[100][100],count=0,code_s[100][4],i,xiangzi[100],book,j...

小糊涂的博客 3745
上一篇: PKU 3669 Meteor Shower(BFS)
下一篇: python 机器学习类库
Jackie_Zhu
博客等级 码龄18年 343粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值