当前位置: 首页 > wzjs >正文

服务器做网站教程重庆森林电影完整版

服务器做网站教程,重庆森林电影完整版,公司转让注意事项,水泥制品做阿里巴巴还是网站好树在算法题中非常常见,今天就用一篇文章来入门树的相关知识 目录 树的存储 存储原理 代码模版 树的遍历 1树的深度优先遍历(dfs递归实现) 代码模版 2树的广度优先遍历(bfs队列实现) 代码模版 关联知识-拓扑…

树在算法题中非常常见,今天就用一篇文章来入门树的相关知识

目录

树的存储

存储原理

代码模版

树的遍历

1树的深度优先遍历(dfs递归实现)

代码模版 

2树的广度优先遍历(bfs队列实现)

代码模版

关联知识-拓扑排序

拓扑排序是什么

拓扑排序怎么写


树的存储

存储原理

可以用邻接矩阵或邻接表,邻接矩阵就是二维数组,邻接表是以链表方式进行存储

代码模版

一个头结点:
所需变量:int h,ne[N],e[N],idx;
解释:h存的是头结点地址,ne[N]存的是每一个节点的下一个节点的地址,(就是数据结构结构体里面的s->next)
e[N]存的是该地址下的值,idx相当于是指针;
具体操作(头插法):
void cs(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
遍历模版
for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];....}

树的遍历

1树的深度优先遍历(dfs递归实现)
https://www.acwing.com/problem/content/848/

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int h[N],e[N*2],ne[N*2];
int ans=N,idx,n;
bool st[N];
void cs(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int dfs(int u)
{st[u]=1;int sum=1,res=0;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(st[j])continue;int s=dfs(j);res=max(s,res);sum+=s;}res=max(res,n-sum);ans=min(ans,res);return sum;
}
int main()
{cin >> n;memset(h,-1,sizeof h);for(int i=0;i<n-1;i++){int a,b;cin >> a >> b;cs(a,b),cs(b,a);}dfs(1);cout << ans;
}

2树的广度优先遍历(bfs队列实现)

​​​​https://www.acwing.com/problem/content/849/

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
int h[N],e[N],ne[N],idx;
int d[N];
void cr(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int bfs()
{memset(d,-1,sizeof d);d[1]=0;queue<int>q;q.push(1);while(!q.empty()){int t=q.front();q.pop();for(int i=h[t];i!=-1;i=ne[i]){int j=e[i];if(d[j]==-1){d[j]=d[t]+1;q.push(j);}}}return d[n];
}
int main()
{cin >> n >> m;memset(h,-1,sizeof h);for(int i=0;i<m;i++){int a,b;cin >> a >> b;cr(a,b);}cout << bfs()<<endl;
}

关联知识-拓扑排序

拓扑排序是什么

简而言之就是,把数的节点变成一个序列,序列当中每个点都满足:在树中该点指向的点在序列的位置位于该点之后,在树中指向该点的点在序列的位置位于该点之前。

拓扑排序怎么写

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
int h[N],ne[N],e[N],idx;
int d[N],ans[N],cnt;
queue<int>q;
void cr(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool bfspd()
{for(int i=1;i<=n;i++){if(d[i]==0){q.push(i);//把每一个入度为0的点入队}}while(!q.empty()){int t=q.front();q.pop();ans[cnt++]=t;//存储队头的值,队头的值就是入度为零的点for(int i=h[t];i!=-1;i=ne[i]){int j=e[i];d[j]--;//断链,入度-1if(d[j]==0){q.push(j);}}}return cnt==n;
}
int main()
{cin >> n >> m;memset(h, -1, sizeof h);for(int i=0;i<m;i++){int a,b ;cin >> a >> b;cr(a,b);d[b]++;//记录每一个点的入度数量}if(bfspd())for(int i=0;i<n;i++){cout << ans[i]<<' ';}else cout << "-1";
}

http://www.dtcms.com/wzjs/361845.html

相关文章:

  • 北京网络公司注册广东网站seo策划
  • 无锡网站建设公司哪家好今天的新闻头条
  • 阿里云 网站南宁关键词优化公司
  • dw做的网站如何上传黑帽seo培训多少钱
  • 济南做网站互联网公司友情链接的网站有哪些
  • 网站建设中 html5 模板下载搜索引擎营销的过程
  • 唐山专业做网站武汉seo推广
  • 网站模板psd成都调查事务所
  • 黄页88客服电话湘潭seo优化
  • 哈尔滨服务最好的网站优化公司近三天新闻50字左右
  • 电子商务网站推广案例买卖交易网
  • 前端开发培训机构推荐无锡南宁seo主管
  • 怎么做一网站佛山百度关键词seo外包
  • 做毕业设计一个网站的数据来源抖音关键词搜索指数
  • 什么软件可以做企业网站企业官网定制设计
  • 大江网站建设私人做网站建设
  • 大理网站建设滇icp备100个裂变营销案例
  • 企业网站建设技术西seo优化排名
  • 建设网站的步骤网推接单平台有哪些
  • 台州学校网站建设惠州seo推广优化
  • 分销怎么做网站开发分销厦门seo怎么做
  • 专业移动微网站设计网络推广外包要多少钱
  • dede网站单页面怎么做网络营销知名企业
  • 用js做网站的滚屏效果磁力链搜索引擎入口
  • 佛山企业网站建设公司营销活动推广策划
  • 外国人讲汉语做网站的视频全网营销
  • 四川微信网站建设公站点
  • 网站建设合作协议哈尔滨百度关键词优化
  • 动态网站开发实例教程代码百度app下载安装 官方
  • 中山网站建设文化策划seo综合查询是什么意思