首页 > 其他分享 >树+dfs

树+dfs

时间:2025-01-16 11:44:38浏览次数:1  
标签:int res back dfs ans now

原题链接:https://codeforces.com/problemset/problem/2050/G
题解链接:https://blog.csdn.net/Lazy_ChessPlayer/article/details/144279298

#include<bits/stdc++.h>
#define lc p<<1
#define rc p<<1|1
#define INF 2e9
using namespace std;
#define lowbit(x) x&(-x)
#define endl '\n'
using ll = long long;
using pii = pair<ll,ll>;
const double PI = acos(-1);
const int N=2e5+10;
vector<int> g[N*2];
int val[N];
int du[N];
ll ans=0;
int dfs(int u,int fa){
	vector<int> res;
	for(auto t:g[u]){
		if(t==fa) continue;
		int m=dfs(t,u);
		if(m>0) res.push_back(m);
	}
	sort(res.begin(),res.end(),greater<int>());
	int now=val[u];
	if(!res.empty()){
		now+=res[0];
	}
	ans=max(ans,(ll)now);
	if(res.size()>=2){
		ans=max(ans,(ll)(val[u]+res[0]+res[1]));
	}
	return now;
}
void solve(){
	ans=-0x3f3f3f;
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		g[i].clear();
		du[i]=0;
		val[i]=0;
	}
	for(int i=1;i<n;i++){
		int u,v;cin>>u>>v;
		du[u]++;
		du[v]++;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	for(int i=1;i<=n;i++){
		val[i]=du[i]-2;
	}
	dfs(1,0);
	cout<<ans+2<<endl;
}


int main() {
	
//	ios::sync_with_stdio(false);
//	cin.tie(nullptr), cout.tie(nullptr);
	
	int T = 1;
	cin>>T;
	while (T--) {
		solve();
	}
	
	return 0;
}



标签:int,res,back,dfs,ans,now
From: https://www.cnblogs.com/laileou/p/18674710

相关文章

  • 【详解】HadoopHDFS操作实例
    目录HadoopHDFS操作实例环境准备HDFS基本命令1.查看HDFS目录内容2.创建目录3.上传文件4.下载文件5.删除文件或目录6.查看文件内容高级操作1.文件重命名2.设置文件权限3.查看文件系统状态1.创建目录2.上传文件3.下载文件4.删除文件或目录注意事......
  • DFS 2025/1/15
    DFS&DFS剪枝优化Basic01 先搜节点少的分支如果搜进来一个大分支而答案不在此分支就会浪费大量时间02可行性剪枝已经白扯了就return03最优性剪枝如果此分支确定不是最优解(差于已有解)就return04记忆化搜索记录之前搜过Data,避免重复搜Question01[......
  • 迷宫问题详解(DFS)(谁都能学会版)
    迷宫问题迷宫问题详解(DFS)前言:具体过程1.定义方向数组并使用嵌套结构体定义栈中元素2.实现栈的基本功能(基本功)3.逆序输出栈中元素(难点之一)4.拼凑函数与具体实现5.笔记6.main函数结语迷宫问题详解(DFS)前言:希望在观看此片之前先去观看懒猫老师的视频,此篇是完全基于......
  • 深入HDFS——元数据管理
    引入通过前面的学习积累,我们对HDFS已经有了不错的理解,但是学习技术,还是要从细微处见真章!今天就通过深入NameNode源码,深入看看HDFS是如何实现元数据管理的。关于源码阅读,我常用的思路是:先对相关技术有一个大致的了解,针对里面感兴趣,或者疑惑的地方,换位思考一下自己来会怎么......
  • DFS与BFS专题
    99.岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路DFS代码#include<iostream>#include<cstring>usingnamespacestd;constintN=55;intn,m;intg[N][N];boolst[N][N];intdx[4]={-1,0,1,0},dy[4]={0,1,0,-1......
  • Luogu P2414 NOI2011 阿狸的打字机 题解 [ 紫 ] [ AC 自动机 ] [ 离线思想 ] [ 树状数
    阿狸的打字机:非常牛的AC自动机题。暴力先考虑在暴力的情况下,我们如何计算\(x\)匹配\(y\)的次数。显然,我们会模拟往\(y\)里加字符的过程,在此过程中做KMP进行匹配,统计答案。那么如果涉及多个模式串呢?就可以把KMP加强成AC自动机了。考虑在AC自动机上如何刻画这个......
  • 使用Java API操作HDFS
    第一步:在Windows配置Hadoop运行环境(1)编辑系统环境变量。使用hadoop-version命令查看hadoop环境是否配置成功,如下图所示:(2)在hadoop-3.3.4文件夹的bin目录下添加Windows系统的依赖文件,如下图所示:(3)重启电脑第二步:配置案例环境,使用idea创建一个maven项目。第三步:在pom.xm......
  • 通过shell脚本定时采集数据到HDFS
    第一步:创建shell脚本(在虚拟机1下的/export/data目录下执行viuploadHDFS.sh命令,编辑shell脚本文件,具体代码如下:)第二步:执行shell脚本(确保Hadoop集群处于启动状态,进入到/export/data目录下执行shuploadHDFS.sh)第三步:验证Hadoop日志文件是否上传成功(在浏览器中查看,结果如图......
  • docker安装fastdfs
    使用Docker安装FastDFS1.获取镜像可以利用已有的FastDFSDocker镜像来运行FastDFS。获取镜像可以通过下载dockerimagepulldelron/fastdfs加载好镜像后,就可以开启运行FastDFS的tracker和storage了。2.运行tracker执行如下命令开启tracker服务dockerrun-dti--netwo......
  • 【分布式存储】HDFS
    https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html HDFS(HadoopDistributedFileSystem)Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(GoogleFileSystem)Google文件系统设计前提和目标:硬件错误、流式数据访问、大规模数据集:运行在HDFS上的......