前言:    图论乃noip之重要知识点,但有点难理解 本人因此吃过不少亏

因为本人实在太弱,所以此篇乃正宗<蒟蒻专属文章>

正文:(本文仅介绍图论中的重点、难点,其余部分略将或不讲)

图一般来说有二种存储方法:邻接矩阵和邻接表

邻接矩阵:

存储:拿二维数组来存
  

for(int i=;i<=n;++i){   //f[q][z]表示点q与点z有没有边相连接
cin>>q>>z; //noip基本别指望,最多三四十分
f[q][z]=; //无向边要存双向
f[z][q]=;
}

可是,虽然存储简单,可效率也太低了(尤其是些超级稀疏的矩阵)

  而且,坏处还没完:读取效率也很低!

读取:

  

cin>>x;//读入x,查与x有关的点
for(int i=;i<=n;++i){ //据说++i比i++快一些
if(f[x][i]==){
cout<<i<<" ";
}
}

这么暴力的for循环,不超时才怪呢

所以,另一种办法来了:邻接表!!

原理:

通过链表的形式,高效的存储/读取边

先使用struct:(我太蒻,只会用struct存)

struct node{
int u,v,next;//u起点,v终点,next待会在说 啥意思
}e[MAXN*]; //无向图要*2(原因:要存两次)!!!!有向图似乎只要一倍
//这类数组名都用e,养成好习惯

读取:

for(int i=;i<=n;++i){
cin>>q>>z; //这类函数名名都用e,养成好习惯
add(q,z); //无向边要存双向
add(z,q); //通常 用自定义函数实现
}

add(加边函数):    注意:要定义head数组,表示点i当前的第一个连接的数组下标!!!!!

代码:

void add(int x,int y,){
++tot;
e[tot].u=x;
e[tot].v=y;
e[tot].next=head[x];
head[x]=tot;
}

一些question&Answer&注意事项:

1:为什么偏偏要插队?

Answer:因为如果不插队,将要加的边就没法指向上一个了(难道你还for一遍?);

2:链表结构其实还有很多其余的办法实现,但我写的这种更适合初学者

(emm.....好像就两个也)

“遍历”方式:

cin>>a; //问和a号点相邻的边有哪些
for(int i=head[a];i!=;i=e[i].next){ //从点a的第一条边开始,若为0结束
cout<<e[i].u<<" "<<e[i].v<<endl; // 到下一个数组下标
}

(完)

写在后面的话:

这是我的第一篇博客(bug一定很多)

  本人的个人主页(洛谷)https://www.luogu.com.cn/user/236929

本人的个人主页https://www.cnblogs.com/Craker/

欢迎来访!

谢谢!

本人QQ:2783119105

本人邮箱:yixuazeng66@126.com

如有问题,请在评论区指出或私信我,

谢谢!

(点个赞再走呗)

图论初步<蒟蒻专属文章>的更多相关文章

  1. 图论初步2<蒟蒻专属,大佬勿喷>

    前言: 本节课讲的是图论的几种遍历方式,若没看图论初步1的赶紧去看 https://www.cnblogs.com/Craker/p/12271090.html 正文: 零.温故而知新 上节课我们学的 ...

  2. 蒟蒻关于斜率优化DP简单的总结

    斜率优化DP 题外话 考试的时候被这个玩意弄得瑟瑟发抖 大概是yybGG的Day4 小蒟蒻表示根本不会做..... 然后自己默默地搞了一下斜率优化 这里算是开始吗?? 其实我讲的会非常非常非常简单,, ...

  3. 一个蒟蒻对FFT的理解(蒟蒻也能看懂的FFT)

    建议同学们先自学一下"复数(虚数)"的性质.运算等知识,不然看这篇文章有很大概率看不懂. 前言 作为一个典型的蒟蒻,别人的博客都看不懂,只好自己写一篇了. 膜拜机房大佬 HY 一. ...

  4. 一个GD初二蒟蒻的自我介绍

    emmm……今天博客第一天使用呢,好激动啊…… 这里是一个来自GD的初二蒟蒻+无脑OIER,什么都不会 NOIP2017普及组:260压线1=还是看RP过的…… GDKOI2018:120暴力大法吼啊 ...

  5. 算法描述》LCA两三事(蒟蒻向)

    LCA是图论中常用的解决树形结构子问题的工具,这一问题一般需要用一个简短的子函数直接解决,但是这对于广大蒟蒻们仍然是一个不小的问题. LCA是指在树形结构中两点的最近公共祖先,对于这个问题,直接向上找 ...

  6. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  7. NOIp蒟蒻的爆零记——HA-0132

    考前: 从十一月开始的听课集训,连考六场:考前的最后两天写(da)着(zhe)各种各样的奇(C)葩(S)模板:一周的疯狂,已经过去: 考前的一晚:第二批高二的六个人聚在一起(还有滑稽大师),愉快的玩( ...

  8. 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化

    4636: 蒟蒻的数列 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 247  Solved: 113[Submit][Status][Discuss ...

  9. 【蒟蒻の进阶PLAN】 置顶+持续连载

    看到周围神犇们纷纷列计划,本蒟蒻也决定跟随他们的步伐,计划大约是周计划吧,具体怎么安排我也不确定.. 2015.12.30 刚刚学习完最基础的网络流,需要进行这方面的练习,从简到难,有空余的话尝试学习 ...

随机推荐

  1. git拉取代码

    1,用sourcetree拉取的时候 遇到  fatal: repository 'http://gitlab.xxx.com/XXX/XXX.git/' not found 2,可以直接在要存放代码 ...

  2. [Qt 踩坑] 设置背景就卡退 报错 异常结束或者crashed 0xFFFFFFFF

    #开始 我现在是带着崩溃得心情写博客的 这个估计是我遇到的最混蛋的bug 我试图用Qt写个小程序 然后给窗口添加一个背景 就像这样 先不管我那个路径的问题 只要写了那个代码,就一定出错 删除了一点事情 ...

  3. Java JDK 1.5 1.6 1.7 新特性整理

    Java JDK 1.5的新特性 1.泛型 List<String> strs = new ArrayList<String>();//给集合指定存入类型,上面这个集合在存入数 ...

  4. EF中 GroupJoin 与 Join

    数据: GroupJoin: 返回左表所有数据 using (tempdbEntities context = new tempdbEntities()) { var query = context. ...

  5. C语言笔记 11_头文件&强制类型转换&错误处理&递归

    头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指 ...

  6. Shiro入门基础

    Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. Authentication:身份认证/登录,验证用户是不是拥有相应的身份: Authorization:授权,即 ...

  7. python opencv:像素运算

    以下运算两个图像的大小需要一样 算术运算: cv2.add(img1, img2):两个图像像素相加 cv2.subtract(img1, img2):两个图像像素相减 cv2.multiply(im ...

  8. 再次立个flag

    今天2019.9.18 从上次迷茫到现在,差不多过去快一年了.   准确点是 442 天 我顺便大概看了一下上次迷茫时期的日志,总觉的不可思议.上次是毕业大概几个月,到目前其实也没多久,但是我变了.. ...

  9. 安装pytorch

    安装cpu版本的 conda install pytorch-cpu torchvision-cpu -c pytorch 安装gpu版本的 conda install pytorch torchvi ...

  10. 安卓手机短信Android SMS 对话号thread_id如何产生与变化

    安卓mmssms.db的sms表的thread_id字段 一个短信号码对应的thread_id字段数字,在手机格机(恢复出厂设置 删除手机上的所有数据)和刷机后会更新.不过这也是显然的,格机和刷机都会 ...