10.图和树基础
创始人
2024-05-20 04:00:14
0

一、基本介绍

1.图

描述的是一些个体之间的关系。这些个体之间既不是前驱后继的顺序关系,也不是祖先后代的层次关系,而是错综复杂的网状关系。我们一般用G=(V,E)G=(V,E)G=(V,E)来表示,VVV表示结点,EEE表示边。

  • 根据边是否有权值,分为带权图和不带权图,也可将不带权图视为权重都为111的图。

  • 根据边是否有方向,分为有向图和无向图。

  • 根据稠密程度(边的条数∣E∣|E|∣E∣与∣V∣2|V|^2∣V∣2)的关系,分为稠密图和稀疏图。

在这里插入图片描述在这里插入图片描述

2.树

是一种特殊的图,它满足∣V∣=∣E∣+1|V|=|E|+1∣V∣=∣E∣+1。将其中一个结点作为根节点,表示所有结点的祖先

对于树上的连边,靠近根节点的结点被叫做父结点,远离根节点的结点被叫做子节点。一个结点只有一个父节点,但可以有多个子节点。具有相同父节点的结点互称为兄弟结点

在这里插入图片描述

二、一些性质

1.度

对于无向图来说,一个结点的度等于该结点所连的边数。

对于有向图来说,一个结点的入度等于连向该结点的边数,一个结点的出度等于连出该结点的边数。

2.子图

对于图G=(V,E)G=(V,E)G=(V,E)和图G′=(V′,E′)G'=(V',E')G′=(V′,E′)来说,如果满足V′∈V,E′∈EV'\in V,E'\in EV′∈V,E′∈E,则G′G'G′是GGG的子图。

3.连通性

  • 对于无向图G=(V,E)G=(V,E)G=(V,E)来说:

    • 如果任意两个结点之间,都有一条通路,那么该图是一个连通图。
    • 无向边构成的树一定是一个连通图,且任意两点之间仅存在一条简单路径(无重边)。
    • 如果一个子图G′G'G′是一个连通图,则称G′G'G′为连通子图
  • 对于有向图G=(V,E)G=(V,E)G=(V,E)来说:

    • 如果任意两个结点之间,都有一条通路,那么该图是一个强连通图。
    • 如果一个子图G′G'G′是一个连通图,则称G′G'G′为强连通子图(强连通分量)。

三、图的表示

1.邻接矩阵

邻接矩阵即使用一个二维数组来完全表示一个图。

  • 在稠密图的情况下,我们更多使用邻接矩阵来表示图。
  • 如果两个点之间存在多条边,那么可能邻接矩阵将并不适用。
  • 邻接矩阵在稀疏图的情况下,容易受点数限制。

mp[u][v]=wmp[u][v]=wmp[u][v]=w表示存在一条从结点uuu到结点vvv的权重为www的边。

对于无向边,可以视为两条方向相反、连接结点相同的边。

const ll maxn=1010;
ll n,m,mp[maxn][maxn];
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++){ll u,v,w;scanf("%lld%lld%lld",&u,&v,&w);mp[u][v]=w;//mp[v][u]=w;}return 0;
}

2.邻接表

邻接表在表示稀疏图时非常紧凑,节省空间,所以成为通常用来表示图的方法。

数组p[u]p[u]p[u]表示结点uuu的最后一条边,p[u]==−1p[u]==-1p[u]==−1则表示点uuu没有别的边了。ttt表示边的数量。

数组e[t]e[t]e[t]表示第ttt条边的所有信息,其中vvv表示边的终点,www表示边的权重,nextnextnext表示具有同样起点的另一条边。

const ll maxn=100010;
struct node
{ll v;ll w;ll next;
}e[maxn*2];
ll n,m,p[maxn],t=0;
void insert(ll u,ll v,ll w)
{e[t].v=v;e[t].w=w;e[t].next=p[u];p[u]=t++;
}
int main()
{memset(p,-1,sizeof(p));scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++){ll u,v,w;scanf("%lld%lld%lld",&u,&v,&w);insert(u,v,w);//insert(v,u,w);}return 0;
}

四、图的遍历

1.邻接矩阵

#include 
#include 
#include 
#include using namespace std;
typedef long long ll;
const ll maxn=1010;
ll n,m,mp[maxn][maxn];
void dfs(ll u,ll pre)
{cout<<"u="<if(i!=pre)dfs(i,u);}
}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++){ll u,v,w;scanf("%lld%lld%lld",&u,&v,&w);mp[u][v]=w;mp[v][u]=w;}return 0;
}

2.邻接表

#include 
#include 
#include 
#include using namespace std;
typedef long long ll;
const ll maxn=100010;
struct node
{ll v;ll w;ll next;
}e[maxn*2];
ll n,m,p[maxn],t=0;
void insert(ll u,ll v,ll w)
{e[t].v=v;e[t].w=w;e[t].next=p[u];p[u]=t++;
}
void dfs(ll u,ll pre)
{cout<<"u="<ll v=e[i].v;if(v!=pre)dfs(v,u);}
}
int main()
{memset(p,-1,sizeof(p));scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++){ll u,v,w;scanf("%lld%lld%lld",&u,&v,&w);insert(u,v,w);insert(v,u,w);}return 0;
}

五、作业

相关内容

热门资讯

人生的励志箴言 关于人生的励志箴言  1.朋友是雨中伞,遮风挡雨; 朋友是雪中炭,暖心驱寒;朋友是被中棉,温暖身心;...
不悔梦归处美文 不悔梦归处美文  今天去图书馆,一下午的时间看了点刘庸的《我不是教你祚》,晚上时也实在是无聊,又不想...
十部必看韩剧历史剧   大家看韩剧喜欢看韩国的历史剧吗?下文是励志网整理的十部必看韩剧历史剧,希望能帮助到你。  十部必...
青春奋斗带字励志图片   伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。下面是由yj...
古人关于描写云的励志诗句集锦 天空中又出现许多千变万化的云彩,时而像羽毛,轻轻地漂泊在空中;时而像羊群,缓缓地移动;时而像大海,翻...
校园励志电影 应届毕业生励志网分享15部校园励志电影:  1、律政俏佳人1、2(Legally Blonde)……...
生产管理励志口号 生产管理励志口号大全  1. 异常改善改善再改善,浪費减少减少再减少  2. 小问题,要重视,老毛病...
tvb励志电视剧2017   2017tvb新片巡礼剧有哪些?2017年tvb依然有好多好看的电视剧准备开播?下面我们一起来看...
励志江苏大龄考生陈洪涛 励志江苏大龄考生陈洪涛  参加16个专业自考  他还拥有多张资格证书  陈洪涛高中毕业后就去了扬州电...
青春励志女生合唱歌曲   导语:有哪些适合女孩子合唱的青春励志歌曲呢?以下是小编收集整理的青春励志女生合唱歌曲,希望大家喜...
青春励志人生小说   青春啊,难道你始终囚禁在狭小圈子里?你得撕破老年的蛊惑人心的网。今天励志网就为大家推荐一些青春励...
高考励志对联集锦   引导语:不知不觉,高考又要来到了,为了鼓励考生,下面unjs小编为大家带来关于高考励志的对联集锦...
四年级语文《徐悲鸿励志学画》... 四年级语文《徐悲鸿励志学画》教学反思  作为一名到岗不久的老师,我们的任务之一就是教学,对教学中的新...
励志歌曲集 励志歌曲之一腾格尔:大男人罗嘉良:创造晴天温兆伦:从未试过拥有Michael Learns To R...
初三班级励志誓词   导语:中考不相信“如果”,多一份勤奋,少一份后悔。在面对即将到来的高考,以下是小编整理的关于初三...
特深沉的人生感悟语句励志 特深沉的人生感悟语句【励志】  人生最重要的不是我们置身何处,而是我们将前往何处,特深沉的人生感悟语...
励志电影《土豪的情人节》推荐   土豪情人节又名土豪520。  《土豪520》是中国电影股份有限公司、江苏幸福蓝海院线有限公司、浙...
励志八字真言 励志八字真言  1、自加压力,敢于争先。  2、孜孜不倦,蒸蒸日上。  3、愚者千虑,必有一得。  ...
成功女人的励志故事 成功女人的励志故事  导语:谁说女子不如男?现在的女子可是个个都能够撑起半边天,事事靠自己。下面是小...
高三励志文章:高三,时间是赞... 高三励志文章:高三,时间是赞下来的    离2011年高考还剩下大约50天的时间了。    我们在复...