博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求树中的最长路 (*【模板】代码个别地方需要根据情况修改 读懂理解后再照搬代码 )...
阅读量:5122 次
发布时间:2019-06-13

本文共 1485 字,大约阅读时间需要 4 分钟。

两次DFS求树中的最长路。

基于邻接矩阵:

代码:

#include 
#include
#include
#include
#include
#include
using namespace std;bool map[10001][10001];int n;int tail;bool vis[1001];int fa[1001];void DFS_root(int dd){ int i, j; for(i=1; i<=n; i++) { if(vis[i]==false && map[dd][i]==true ) { fa[i]=fa[dd]+1; vis[i]=true; DFS_root(i); } } int len=0; tail=1; for(j=2; j<=n; j++) { if(fa[j]>len) tail=j; } //printf("%d***\n", tail ); return;}int len=0; //记录树中最长的路径长度void DFS_len_tree(int dd){ int i, j; for(i=1; i<=n; i++) { if(vis[i]==false && map[dd][i]==true ) { fa[i]=fa[dd]+1; //由前一个节点的长度+1过来的 vis[i]=true; DFS_len_tree(i); } } len=fa[1]; for(j=2; j<=n; j++) { if(fa[j]>len) len=fa[j]; }}int main(){ int i, j; int u, v; scanf("%d", &n); for(i=0; i<=n; i++ ) { for(j=0; j<=n; j++) { map[i][j]=false; } } //map的初始化 for(i=0; i

 基于vector二维模拟邻接表:

代码:

#include 
#include
#include
#include
#include
#include
#include
#define N 100002using namespace std;vector
q[N];bool vis[N];int fa[N];int n, tail;int ans;void DFS_root(int dd){ int i, j; int len; len=q[dd].size(); for(i=0; i
len) { len=fa[j]; tail=j; } }}void DFS_len_tree(int dd){ int len, i, j; len=q[dd].size(); for(i=0; i
ans ) ans=fa[j]; } printf("%d\n", ans ); return 0;}

 

转载于:https://www.cnblogs.com/yspworld/p/4268540.html

你可能感兴趣的文章
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
STM32F10x_RTC秒中断
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
SpringMVC学习总结(三)——Controller接口详解(1)
查看>>
牛的障碍Cow Steeplechase
查看>>
Zookeeper选举算法原理
查看>>
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
Java高阶回调,回调函数的另一种玩法
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>