| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 树的dfs和bfs -> 正文阅读 |
|
[数据结构与算法]树的dfs和bfs |
树的重心给定一颗树,树中包含?nn?个结点(编号?1~n1~n)和?n?1n?1?条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数?nn,表示树的结点数。 接下来?n?1n?1?行,每行包含两个整数?aa?和?bb,表示点?aa?和点?bb?之间存在一条边。 输出格式 输出一个整数?mm,表示将重心删除后,剩余各个连通块中点数的最大值。 数据范围 1≤n≤1051≤n≤105 输入样例
输出样例:?
该题是无向图,稀疏图,我们采用临接表的形式来进行存储, 类似于单链表的存储方式。 首先对h 处理成-1。 然后是add操作,也就是对两个点进行连边,由于我们是无向图,也就是说我们需要两边各连一次,重复两次add操作。 int dfs(int u) ????????dfs(j);? 然后具体到这道题目就是不同的dfs,返回的数据类型等。
这里引用一下?Wraith_G 的代码,很感谢!因为我的注释写的不清楚。。 对于bfs: 图中点的层次:给定一个?nn?个点?mm?条边的有向图,图中可能存在重边和自环。 所有边的长度都是?11,点的编号为?1~n1~n。 请你求出?11?号点到?nn?号点的最短距离,如果从?11?号点无法走到?nn?号点,输出??1?1。 输入格式 第一行包含两个整数?nn?和?mm。 接下来?mm?行,每行包含两个整数?aa?和?bb,表示存在一条从?aa?走到?bb?的长度为?11?的边。 输出格式 输出一个整数,表示?11?号点到?nn?号点的最短距离。 数据范围 1≤n,m≤1051≤n,m≤105 输入样例:
输出样例:
这道题目,像是低配版的dijkstra,由于边的长度为1, 并且存在重边和自环,输出的是1到n的距离,更形象的说n是1节点的第几层根。 ?然后就可以写了,用bfs,不断地插入,取出数据,然后用图的遍历来进行判断,符合要求的押入队列。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:15:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |