工业帝国这题,WA求助!

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k,t[200005],hd,ans;
vector<int> v[200005];
struct f{
int tre,sum;
}ct[200005];
int dfs(int cnt,int id){
	t[id]=1;
	ct[id].sum=cnt;
	ct[id].tre=1;
	if(cnt>n) return 1;
	for(int i=0;i<v[id].size();i++)
		if(t[v[id][i]]==0)ct[id].tre+=dfs(cnt+1,v[id][i]);
	return ct[id].tre;
}
bool cmp(f one,f two){
	if(one.tre!=two.tre)return one.tre<two.tre;
	return one.sum>two.sum;
}
signed main(){
	cin>>n>>k;
	for(int i=1;i<n;i++){
		int a,b;
		cin>>a>>b;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	dfs(1,1);
	hd=ct[1].tre;
	sort(ct+1,ct+n+1,cmp);
	for(int i=1;i<=k;i++){
		ans=ans-ct[i].tre+ct[i].sum;
	}
	cout<<ans;
}
3 个赞

同感啊 :sob:
不过有头绪了

1 个赞

我也是啊 :sob: :sob: