求助,dfs炸了
查看原帖
求助,dfs炸了
783336
Earth_Sky楼主2024/12/23 20:32

rt

#include<bits/stdc++.h>
using namespace std;
vector<int>a[1005];
int n,k,ans;bool b[1005];
int dfs(int f,int x,int cnt0,int cnt1){
	if(cnt1>k) return cnt0+cnt1-1;
	int len=a[x].size(),cnt=-1;
	for(int i=0;i<len;i++){
		if(a[x][i]==f) continue;
		int t;t=dfs(x,i,cnt0+(!b[a[x][i]]),cnt1+b[a[x][i]]);
		cnt=max(cnt,t);
	}return cnt;
}
int main(){
	ios::sync_with_stdio(NULL);
	cin.tie(0);cout.tie(0);
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>b[i];
	for(int i=1;i<n;i++){
		int u,v;cin>>u>>v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
	for(int i=1;i<=n;i++){
		int p;p=dfs(0,i,!b[i],b[i]);
		ans=max(ans,p);
	}cout<<ans;

	return 0;
}
2024/12/23 20:32
加载中...