#7 TLE 谁能帮忙看一下
查看原帖
#7 TLE 谁能帮忙看一下
1277329
tanruixuan楼主2024/8/7 15:46
#include <bits/stdc++.h>
using namespace std;
#define get getchar()
#define ll long long
ll tot,h[500005];
ll dep[200005],size[200005],val[200005];
int read()
{
    int t=0;char ch=get;
    while (ch<'0'||ch>'9') ch=get;
    while (ch>='0'&&ch<='9') t=t*10+ch-'0',ch=get;
    return t;
}
struct aaa
{
	int ne,to;
}e[1000005];
void add(int x,int y)
{
	e[++tot].ne=h[x];e[tot].to=y;h[x]=tot;
} 
void dfs(int u,int fa)
{
    dep[u]=dep[fa]+1;
    for (int i=h[u];i;i=e[i].ne) 
    {
        int v=e[i].to;
        if (v==fa) continue;
        dfs(v,u);
        size[u]+=size[v];
    }
    size[u]+=1;
    val[u]=dep[u]-size[u];
}
bool cmp(ll a,ll b)
{
    return a>=b;
}
ll ans=0;
int main()
{
	int n=read(),k=read();
    for (int i=1;i<=n-1;i++)
    {
        int aa=read(),bb=read();
        add(aa,bb);
        add(bb,aa);
    }
    dfs(1,0);
    sort(val+1,val+n+1,cmp);
    for (int i=1;i<=k;i++) ans+=val[i];
    cout<<ans;
	return 0;	
 } 
2024/8/7 15:46
加载中...