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

北京网站开发优选ls20227推广计划方案模板

北京网站开发优选ls20227,推广计划方案模板,网站建设的电话,注册商标设计树与图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 (1) 邻接矩阵:g[a][b] 存储边a->b (2) 邻接表: // 对于每个点k&#xff0c…

树与图的存储

树是一种特殊的图,与图的存储方式相同。
对于无向图中的边ab,存储两条有向边a->b, b->a。
因此我们可以只考虑有向图的存储。

(1) 邻接矩阵:g[a][b] 存储边a->b

(2) 邻接表:

// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点
int h[N], e[N], ne[N], idx;// 添加一条边a->b
void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}// 初始化
idx = 0;
memset(h, -1, sizeof h);

树与图的遍历 

时间复杂度 O(n+m), n 表示点数,m 表示边数

深度优先遍历

int dfs(int u)
{st[u] = true; // st[u] 表示点u已经被遍历过for (int i = h[u]; i != -1; i = ne[i]){int j = e[i];if (!st[j]) dfs(j);}
}

树的重心

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 1e5 + 10, M = 2 * N;int n;
int h[N], e[M], ne[M], idx;
bool st[N];
int ans = N;void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}// 以 u 为根的子树中 点的数目
int dfs(int u)
{st[u] = true;int sum = 0, res = 0;// sum 表示 以 u 为根的子树的节点的数量// res 表示 选择u节点为重心, 最大的 连通子图节点数for (int i = h[u]; i != -1; i = ne[i]) {int j = e[i];if (st[j]) continue;int s = dfs(j);res = max(res, s);sum += s;}res = max(res, n - 1 - sum); // 选择u节点为重心, 最大的 连通子图节点数ans = min(ans, res);return sum + 1; // 因为sum初始化为0 而当前这个点(即根) 也算是该连通块内的一点
}int main()
{scanf("%d", &n);memset(h, -1, sizeof h);for (int i = 0; i < n - 1; i++) {int a, b;scanf("%d%d", &a, &b);add(a, b); add(b, a);}dfs(1);printf("%d\n", ans);return 0;
}

宽度优先遍历

queue<int> q;
st[1] = true; // 表示1号点已经被遍历过
q.push(1);while (q.size())
{int t = q.front();q.pop();for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];if (!st[j]){st[j] = true; // 表示点j已经被遍历过q.push(j);}}
}

图中点的层次 

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>using namespace std;const int N = 1e5 + 10;int n, m;
int h[N], e[N], ne[N], idx, d[N];void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx++;     
}int bfs()
{memset(d, -1, sizeof d);queue<int> q;d[1] = 0;q.push(1);while (q.size()) {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()
{memset(h, -1, sizeof h);scanf("%d%d", &n, &m);for (int i = 0; i < m; i++) {int a, b;scanf("%d%d", &a, &b);add(a, b);}printf("%d\n", bfs());return 0;
}

http://www.lbrq.cn/news/2512135.html

相关文章:

  • wordpress 插件复制山西seo
  • 搜集关键词的网站站长统计app软件
  • 网站设计方式如何进行搜索引擎优化 简答案
  • 租空间做网站系统优化软件哪个好
  • 在阿里巴巴上做网站需要什么条件网站怎样才能在百度被搜索到
  • 企业 宣传 还要网站吗信阳seo优化
  • 进入网站服务器怎么做楼市最新消息
  • 网站后台分析图怎么做广告公司怎么找客户资源
  • 原油可以取什么做标题发网站友情链接实例
  • 北京网站开发学习陕西新闻今日头条
  • 做企业网站的合同泰州seo平台
  • ui作品集 网站怎么做媒体平台推广
  • 外贸网站模板免费下载微商软文
  • 网站建设骗子百度信息流代运营
  • 做超市商品海报免费海报模版网站100个成功营销案例
  • 赣县区建设局网站优化公司怎么优化网站的
  • 集团网站建设服务公司广告制作公司
  • 做网站蓝色和什么颜色搭配好看百度公司全称
  • 专业电子科技网站建设百度助手安卓版下载
  • 今天发生的国际新闻seo到底是什么
  • 网站建设外包需要多少钱seo技术蜘蛛屯
  • php动态网站开发 唐四薪西安百度提升优化
  • 建设部网站1667号公告百度快照投诉
  • vs网站制作教程seo矩阵培训
  • 网易那个自己做游戏的网站是什么原因百度seo排名点击器app
  • h5响应式网站模板站内优化怎么做
  • 自己做网站费用潍坊网站排名提升
  • 学做网站需要哪几本书关键词竞价排名是什么意思
  • 招聘网站开发站长工具一区
  • 做鸡蛋期货看什么网站市场监督管理局官网入口
  • 如何创建一个 Solana 钱包?
  • Mysql表的增删改查(进阶)
  • MCP资源管理深度实践:动态数据源集成方案
  • “太赫兹”
  • [VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
  • 【笔记】系统