社区讨论

How ABC F

学术版参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mm6dfr3k
此快照首次捕获于
2026/02/28 21:43
上周
此快照最后确认于
2026/03/03 10:35
上周
查看原帖
CPP
#include <bits/stdc++.h>
#define SACRIFICING using
#define THE namespace
#define ROOK std
SACRIFICING THE ROOK;
typedef long long ll;
int n;
struct node{
	vector<int>s;
}a[200009];
int sum;
void dfs(int x,int f,int dep){
    if(a[x].s.size()<3-bool(dep==0)){
        sum=max(dep,sum);
    }
    else{
        sum=max(dep+1,sum);
    }
  //  cout<<x<<' '<<dep<<'\n';
	for(int i:a[x].s){
		if(i==f)continue;
		if(a[x].s.size()>=3+1-bool(dep==0))dfs(i,x,dep+1);
        else dfs(i,x,0);
	}
}
void Main(){
	for(int i=1;i<=n;i++){
		while(!a[i].s.empty()){
			a[i].s.pop_back();
		}
	}
	sum=0;
	n=0;
	cin>>n;
	for(int i=1,x,y;i<n;i++){
		cin>>x>>y;
		a[x].s.push_back(y);
		a[y].s.push_back(x);
	}
	dfs(1,0,0);
	cout<<sum<<'\n';
}
int main(){
	int t;
	cin>>t;
	while(t--){
		Main();
	}
	return 0;
}

考虑是关于强制重置开始和是不是1的判断炸了(就是那一堆加减)

回复

6 条回复,欢迎继续交流。

正在加载回复...