图的基本存储的基本方式三:边集数组

图的存储结构(下)十字链表和邻接多重表,边集数组 图的存储结构,对于邻接表在无向图和有向图的存储结构的优化 阅读详情

Description

解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么?

Input

多组输入,到文件结尾。
每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v、w代表u到v有一条有向边权值为w。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入一个数为a

注意:点的编号为0~n-1,2<=n<=500000 ,0<=m<=500000,0<=q<=500000,u!=v,w为int型数据。输入保证没有自环和重边

Output

对于每一条询问,输出一行两个数x,y。表示排序后第a条边是由x到y的。对于每条边来说排序规则如下:
权值小的在前。

权值相等的边出发点编号小的在前

权值和出发点相等的到达点编号小的在前
注:边的编号自0开始

Sample

Input
4 3
0 1 1
1 2 2
1 3 0
3
0
1
2

Output
1 3
0 1
1 2

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

struct node
{
    int u,v;
    int w;
}s[500005];

void sort_map(node s[],int l,int r)
{
    int i,j,u,v,w;
    if(l<r)
    {
        i = l;
        j = r;
        w = s[i].w;
        u = s[i].u;
        v = s[i].v;
        while(i<j)
        {
            while((i<j && s[j].w>w) || (i<j && s[j].w==w && s[j].u>u) || (i<j && s[j].w==w && s[j].u==u && s[j].v>v))
                j--;
            if(i<j)
            {
                s[i] = s[j];
                i++;
            }
            while((i<j && s[i].w<w) || (i<j && s[i].w==w && s[i].u<u) || (i<j && s[i].w==w && s[i].u==u && s[i].v<v))
                i++;
            if(i<j)
            {
                s[j] = s[i];
                j--;
            }
        }
        s[i].w = w;
        s[i].u = u;
        s[i].v = v;
        sort_map(s,l,i-1);
        sort_map(s,i+1,r);
    }
    else
        return ;
}

int main()
{
    ios::sync_with_stdio(false);

    int n,m,t,x;
    while(cin>>n>>m)
    {
        memset(s,0,sizeof(s));
        for(int i=0;i<m;i++)
            cin>>s[i].u>>s[i].v>>s[i].w;
        sort_map(s,0,m-1);
        cin>>t;
        while(t--)
        {
            cin>>x;
            cout<<s[x].u<<" "<<s[x].v<<endl;
        }
    }
    return 0;
}

C++边集数组实现:从数据结构到Kruskal算法实战 图论是计算机科学处理网络关系的基础,其核心在于如何高效存储和操作顶点与边。图的存储结构直接影响算法效率,常见方案如邻接矩阵适合稠密图但空间开销大,邻接表适合稀疏图但边查询不便。边集数组作为一种替代方案,其原理是将所有边信息直接存入数组,每条边记录起点、终点和权重,实现了紧凑存储和O(E)的边遍历效率。这一特性在需要批量处理边或按权重排序的场景中极具技术价值,尤其适用于最小生成树等经典算法。在工程实践中,边集数组与Kruskal算法结合,通过并查集判断连通性,能高效求解网络优化问题,是算法竞赛和关系分析中的实 阅读详情

相关推荐

数据结构(廿四) -- C语言版 -- 图 - 图的存储结构 -- 十字链表、邻接多重表、 边集数组

在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。从图的逻辑结构定义来看,图中任何一个顶点都可以看成是第一个顶点。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。

青椒*^_^*凤爪爪的博客 8016

图的存储 ——边集数组 & 邻接表

图的存储 ——边集数组 & 邻接表

代码改变世界 1694

图的存储结构之边集数组

说明:边集数组是由两个一维数组构成。一个是存储顶点的信息;另一个是存储边的信息。这个边数组每个数据元素由一条边的起点下标(begin)、终点下标(end)和权(weight)组成。 边集数组结构: 顶点表结构:(用来存储顶点信息) typedef struct VertexNode4 /*顶点表结点*/ { VerterType data;/*数据域*/ }vexs4[MAX]; 表现形式...

qq_38158479的博客 6316

大话数据结构二十二:图的存储结构之边集数组

1. 边集数组简介: 边集数组由两个一维数组构成: 1.) 一个存储顶点信息。 2.) 一个存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin)、终点下标(end)、和权(weight)组成。 2. 边集数组适用场景: 边集数组关注的是边的集合,在边集数组中要查找一个顶点的度需要扫描整个边数组,效率并不高。 因此它更适合对边依...

凤凰涅槃 403

MITRE ATT&CK超详细学习笔记-01(背景,术语,案例)

MITRE是一个向美国政府提供系统工程、研究开发和信息技术支持的非营利性组织,于1958年从麻省理工学院林肯实验室分离出来后参与了许多最高机密的政府项目,开展了大量的网络安全实践。例如,MITRE公司在1999年发起了常见披露漏洞项目(CVE,CommonVulnera-bilitiesandExposures)并维护至今。其后,MITRE公司还维护了常见缺陷列表(CWE,CommonWeaknessEnumeration)这个安全漏洞词典。.........

Zichel77的博客 1万+

AI 小说生成器本地部署完全指南

这篇文章介绍了本地部署AI小说生成器的完整指南,主要面向网文作者、内容创作者和AI爱好者。文章从环境搭建到创作实践,详细讲解了三种主流部署方案:Ollama(推荐新手)、LMStudio(图形界面)和text-generation-webui(高级定制)。内容涵盖硬件需求、系统架构、模型选择、API对接、提示词工程等关键技术环节,并提供了小说创作的特制提示词模板和参数调优建议。文章还讨论了长篇小说管理、多模型协作等进阶技巧,以及版权伦理等法律问题。最后推荐了相关工具资源和社区论坛,帮助读者实现安全、高效、可

珂珂可爱多 2247

算法数据结构——图的存储结构(邻接矩阵、边集数组、邻接表、链式前向星、哈希邻接表)及相关应用(图的遍历、连通性、生成树、最短路径、网络流量、二分图问题)

算法数据结构——图的存储结构(邻接矩阵、边集数组、邻接表、链式前向星、哈希邻接表)及相关应用(图的遍历、连通性、生成树、最短路径、网络流量、二分图问题)

baidu_33164415的博客 675

stm32f103c8t6的中文字库

stm32的成熟中文字库,上手即用,操作简单

nbbskk的博客 3653

【数据结构】图-图的存储_边集数组(图解、c++、java)

URLeisure的图的存储_边集数组“完美”复习资料。

扑腾的江鱼复习仓库 3265

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1616

sophgo sdk v23.03.01

C/C++程序建议在x86主机上使用交叉编译工具链编译生成可执行文件后,再拷贝到SoC目标平台运行。# 创建docker用户组,若已有docker组会报错,没关系可忽略。对于SoC模式,模型转换也需要在docker开发容器中完成;docker开发容器的配置参照前述章节相关内容。6、创建docker容器并进入Docker。# docker命令免root权限执行。# 将当前用户加入docker组。# 重启docker服务。# 安装 docker。3、安装docker。7、SoC 环境配置。

weixin_40723768的博客 913

【数据结构】图的存储结构——边集数组

图的存储结构之边集数组 边集数组:由两个一维数组构成。一个是存储顶点的信息;另一个是存储边的信息。 边数组的实现用到结构体!边数组每个数据元素由一条边的起点下(begin)、终点下标(end)和权(weight)组成。 struct Edge{ int begin, end, weight; }; 顶点数组使用普通一维数组 以上图为例,边集数组的存储形式为: ...

zgsdlr的博客 2112

常用本体建模工具

常用本体建模工具: Apollo、OntoStudio、TopBraid Composer、Semantic Turkey、Knoodl、Chimaera、OliEd、WebODE、Kmgen和DOME Protégé Protégé[1]是一款由斯坦福大学编写并维护的开源本体建模和编辑工具,其支持Web版本和PC版本,使用OWL语言(关于OWL的详细介绍可参看前文2.1节内容)对知识进行表示,读者可以通过Protégé的官方网站访问Web版本或下载桌面版本。Protégé最早开发于1987年,最初目的是

qq_40503347的博客 6162

【开卷数据结构 】图的五大存储方式

【开卷数据结构 】图的五大存储方式 1.邻接矩阵2.邻接表 3. 十字链表4.邻接多重表5.边集数组

Ceylan__的博客 9437

【人工智能】Cursor模型被封?两步教你破解

Cursor模型全线被禁,主流模型如Claude、GPT-4无法访问,仅剩Deepseek等基础模型可用。官方证实限制源于上游API区域政策,提供三种"无效"解决方案引发用户不满。社区发现有效解决方式:需同时开启全局代理和将Cursor网络设置改为HTTP/1.1协议,详细步骤包括修改用户设置和完全重启程序。另有SOCKS5代理配置方案供高级用户选择。技术原理推测HTTP/1.1可绕过区域检测。用户面临继续使用或转投其他工具的选择,社区交流受限但仍有讨论。

奶爸的编程之路,也就一周冷个三天 2191

SAP S/4 HANA CO 成本模块实战指南

摘要:SAP S/4HANA CO(管理会计)模块是企业内部成本管理的核心工具。本文系统介绍了CO模块的组织结构(控制范围与会计科目表映射)、基础概念(计划值与预算值)以及6大子模块功能(成本要素、成本中心会计等)。重点解析了各子模块的应用场景与差异,包括成本归集、费用分摊、利润分析和产品成本控制,并对比了利润中心与成本中心、内部订单与销售订单的区别。通过事务代码示例和功能对比表,帮助用户快速掌握SAP CO模块的核心管理逻辑与实施要点。

金牌架构师 1125

图的存储结构——邻接矩阵与边集数组

图的存储结构——邻接矩阵与边集数组 专栏导读及目录https://blog.youkuaiyun.com/createprogram/article/details/86741044 用计算机处理图论问题,首先要用某种表达方式将图存放在计算机中,这里介绍两种最常用的存储结构,即邻接矩阵和边集数组。 邻接矩阵 (1)矩阵定义 用邻接矩阵表表示顶点之间相邻关系的矩阵。在图的邻接矩阵表示法中: 用邻接矩...

黑色吊椅的博客 3432

蓝牙模块HM-10手册

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

边集数组的实现

//无向带权图边集数组存储 #include<cstdio> #include<iostream> #include<algorithm> const int MAX = 100; //最大边数 using namespace std; typedef struct{ int head,tail; ...

Zyong139064359的博客 1432

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

图的五种存储结构及其C语言实现

文章目录???? 一、图的基本概念????二、图的基本存储结构????1.邻接矩阵法????1.1 存储结构????1.2 创建邻接矩阵????1.3 打印邻接矩阵存储的图????1.4 测试函数????2.邻接表法????2.1 存储结构????2.2 创建邻接表????2.3 打印邻接表法存储的图????2.4 测试函数????️3.十字链表法????️3.1 存储结构????3.2 创建十字链表????3.3 打印十字链表存储的图????3.4 测试函数????4.邻接多重表法????4.1 存储结构

CS_boy的博客 5255

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

图的存储结构-邻接多重表、边集数组

图的存储结构:   如果我们在无向图的应用中,关注的重点是顶点的话,那么邻接表是不错的选择,但是我们关注的是边的操作,比如对已经访问过的边做标记,或者删除某一条边等操作,邻接表就显得不那么方便了。   图解: 若要删除(v0,v2)这条边,就需要对邻接表结构中边表的两个节点进行删除操作。 相对操作比较麻烦!   因此,也仿照十字链表的方式,对边表结构进行改装,重新定义的

Y_23k_bug的专栏 2370

数据结构图的基本操作c语言_C语言:数据结构-图的存储结构-边集数组

边集数组(Edgeset Array)是利用一维数组存储图中所有边的一种图的表示方法。该数组中所含元素的个数要大于等于图中的边数,每个元素用来存储一条边的起点和终点(对于无向图,可选定边的任一端点为起点或终点)以及权值(若有的话),各边在数组中的次序可任意安排,也可根据具体要求而定。边集数组只是存储图中所有边的信息,若需要存储顶点信息,同样需要一个具有n个元素的一维数组。图7-1中的G2和图7-5...

weixin_39796116的博客 577

图的四种存储方式

邻接矩阵、边集数组、邻接表、链式前向星

m0_63282219的博客 1216

图的存储结构——十字链表,邻接多重表和边集数组

图的存储结构

萌新的学习 497

图的边集数组存储

图的存储结构: 如果我们在无向图的应用中,关注的重点是顶点的话,那么邻接表是不错的选择,但是我们关注的是边的操作,比如对已经访问过的边做标记,或者删除某一条边等操作,邻接表就显得不那么方便了。 图解: 若要删除(v0,v2)这条边,就需要对邻接表结构中边表的两个节点进行删除操作。 相对操作比较麻烦! 因此,也仿照十字链表的方式,对边表结构进行改装,重新定义...

weixin_30906701的博客 712

图——基本的图算法(一)图的存储结构

图——基本的图算法(一)图的存储结构 1. 图的表示方法 对于图G=(V, E)来说,可以有两种标准的表示方法,这两种方法都可以表示有向图和无向图: (1)邻接矩阵 (2)邻接链表 ...

hh66__66hh的博客 2万+
上一篇: 图的基本存储的基本方式二:邻接表(不带权值)
下一篇: A - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
笑着找bug
博客等级 码龄7年 22粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值