<图论入门>邻接矩阵+邻接表
非本人允许请勿转载。
趁热打铁,学会了邻接表把这个总结一下,以及感谢大佬uncle-lu!!!(奶一波)祝早日进队!
首先,图论入门就得是非常基础的东西,先考虑怎么把这个图读进去。
给定一个无向图,如下
怎么把这个图的数据读入进去呢?
把这个图剖析开来看,1连着的是2和3,2连着4和5,3连着6和7,4连着5,5连着8和6,6连着9。
所以这个图可以用一种神奇的东西————邻接矩阵来存。如下,能联通的制为1,不能联通的制为0。
那么可以看出来,这个邻接矩阵光读入的时间复杂度就是O(N2)的了,在有些情况下就会非常的浪费时间和空间,不利于这个身心健康发展啊。
所以就有了邻接表这个东西,邻接表邻接表,也就是边表,他存的是边而非其他gaygay的东西。这个邻接表是有两种存边的方法,一种是用链表来维护,把要存的边存在链表里,第二种是用数组模拟链表来维护,比链表要更加好理解一些???
纯手制链表,与该图相符,如果是带权值的可以再加一行。但是这里就看出来了这个链表的弊端,对于无向图也会出现一些奇奇怪怪的事情,像多次重复出现某个值。
那么这是链表版的邻接表,那么这个数组版的就如下。
U数组就是起点,V就是终点,这个图是无向图,就人为省略了那些重复的东西。
所以邻接矩阵和邻接表的代码如下:
临接矩阵:
#include<bits/stdc++.h> ][]; int main() { int n , m , x , y; scanf("%d%d",&m,&n); ;i<=n;++i) { ;j<=n;++j) { cin >> x >> y ; edge[x][y]=w; } } // printf("linjiejuzhenduwanle happly"); ; }
临接表:
#include<bits/stdc++.h> struct node { int v , next ; }edge[]; ],cnt; void add_edge(int x , int y ) { edge[++cnt].v = x ; edge[cnt].next = head[x]; head[x] = cnt ; return ; } int main() { int n , m; scanf("%d%d",&n,&m); int x , y ; ; i < m ; i ++) { scanf("%d%d",&x,&y); add_edge(x,y); } // printf("linjiebiaowanleduwanle happly"); ; }
那么就开始令(丧)人(心)愉(病)快(狂)的图论题吧,啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。
//你哈个辣子啊你。
还有158天初赛, 还有186天复赛。
那是我愿意付诸一生的人,现在却没法拥有。
<图论入门>邻接矩阵+邻接表的更多相关文章
- HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)
题目链接: 传送门 畅通工程续 Time Limit: 1000MS Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
- hdu 1874 畅通工程(spfa 邻接矩阵 邻接表)
题目链接 畅通工程,可以用dijkstra算法实现. 听说spfa很好用,来水一发 邻接矩阵实现: #include <stdio.h> #include <algorithm> ...
- 第6章 图的学习总结(邻接矩阵&邻接表)
我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...
- 数据结构之 图论---bfs(邻接表)
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...
- 网络流三大算法【邻接矩阵+邻接表】POJ1273
网络流的基本概念跟算法原理我是在以下两篇博客里看懂的,写的非常好. http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html http://www.cnb ...
- 图的全部实现(邻接矩阵 邻接表 BFS DFS 最小生成树 最短路径等)
1 /** 2 * C: Dijkstra算法获取最短路径(邻接矩阵) 3 * 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> ...
- 图论——最小生成树prim+邻接表+堆优化
今天学长对比了最小生成树最快速的求法不管是稠密图还是稀疏图,prim+邻接表+堆优化都能得到一个很不错的速度,所以参考学长的代码打出了下列代码,make_pair还不是很会,大体理解的意思是可以同时绑 ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
随机推荐
- Linux之split命令
split - split a file into pieces 切割一个文件至多片 参数: -a, --suffix-length=N 使用的后缀的长度,默认长度为2,例如'aa','ab' ...
- python的with语句,超级强大
With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作.对于这种场景,Python的with语句提供了一种非常方便的处理方式.一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取 ...
- 使用github+hexo搭建博客笔记
听说github上可以搭博客,而且不用自己提供空间和维护,哈哈哈 作为一名程序猿,github搭博客对我有种神奇的吸引力,赶紧动手试一试 关于如何使用hexo搭建博客网上好的教程多如牛毛,而且这篇博客 ...
- SQL Server 备份所有数据库代码
今天让我备份一下网上所有数据库,猛地一看,几百个呢, 坑爹呢,只好网上找找有没有简便的,没想到还真有 记下来,以后好用,哈哈... use master declare @DbName varchar ...
- 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 2
事件要到那里去? 每个事件源处理类都维护着一个自己的事件队列, 在Monkey中叫做CommandQueue,里面装的是每个具体的MonkeyEvent事件.当来自网络的字串命令被翻译成对应的Monk ...
- 老李推荐:第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介
老李推荐:第2章2节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之NotesList简介 NotePad窗口Activity之NotesL ...
- java 基础知识六 字符串2
java 基础知识六 字符串2 1.String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法 . String 是不可变对象,也就是一旦创建,那么整 ...
- var的一些理解
var 是 variable(变量,可变物)的简写.在多种编程语言中,var 被用作定义变量的关键字,在一些操作系统中也能见到它的身影.类似object,但是效率比object高一点. var是一个局 ...
- 1001. Exponentiation高精度运算总结
解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...
- Xamarin GitHub 下载的源码运行不了
初学Xamarin ,各种折腾,大概这公司破电脑配置差,老是很多问题. GitHub 真是个好东西,可以参考别人做的,不过下载来运行不了就各种折腾了,为此我重装电脑两次了,反正win10安装就十几分 ...