大佬们指点下迷津,三个样例都过了,还是WA qwq,普及第四题.工业帝国

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k,maxx,t[200005],all,f1,s2;
vector v[200005];
struct city{
int subtree,fl;
}c[200005];
int dfs(int dep,int p){
t[p]=1;
c[p].fl=dep;
c[p].subtree=1;
if(dep>n) return 1;
for(int i=0;i<v[p].size();i++){
if(t[v[p][i]]==0) c[p].subtree+=dfs(dep+1,v[p][i]);
}
return c[p].subtree;
}
bool cmp(city first,city second){
if(first.subtree!=second.subtree) return first.subtree<second.subtree;
return first.fl>second.fl;
}
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);
f1=c[1].subtree;
sort(c+1,c+n+1,cmp);
for(int i=1;i<=k;i++){
all=all-c[i].subtree+c[i].fl;
}
cout<<all;
return 0;
}

题目描述

阿斯罗菲克帝国是大陆三大帝国中最北方的一个。费尔巴哈大帝认为工业发展程度才是一个帝国实力最重要的体现,因此他决定在帝国的 n 座城市里选定恰好 k 座城市建立工业基地。帝国的 n 座城市由 n-1 条双向通行的道路连接,且从任意一个城市都可以到达其它任意一座城市,大帝所在的 1 号城市就是帝国的首都。

每一年,大帝都会召开帝国工业大会,并下令每一个工业基地都派一位代表来首都参会,每一位代表都会走最短路径到达首都。但是由于代表待在工业基地的时间太久了,他们出来开会时总是想经过尽可能多的没有工业基地的城市。大帝体恤民情,因此希望选取 k 座城市建立工业基地后,每次开会的代表都能够经过尽可能多的没有工业基地的城市。

请问每年代表经过的没有工业基地的城市数量总和最多是多少。

输入格式

第一行两个整数 n 和 k,接下来 n-1 行每行两个整数表示一条双向通行的路径。

输出格式

输出一行一个整数表示答案。

样例输入

7 4 1 2 1 3 1 4 3 5 3 6 4 7

样例输出

7

样例输入

4 1 1 2 1 3 2 4

样例输出

2

样例输入

8 5 7 5 1 7 6 1 3 7 8 3 2 1 4 5

样例输出

9

数据规模

2≤n≤2⋅105,1≤k<n

2 个赞

+1
:broken_heart: :broken_heart: :broken_heart:

2 个赞

+1
:broken_heart: :broken_heart: :broken_heart:

2 个赞

+1
:broken_heart: :broken_heart: :broken_heart:

2 个赞

大佬们,救救孩子吧,要被他折磨疯了
qwq

2 个赞

+1@~@

2 个赞

我们也被折磨疯了,qwq

2 个赞

AC了

2 个赞

我!@#@!%#……¥

2 个赞


看我特判

2 个赞

哈哈哈

2 个赞