• EZOJ #389点分治好题


    分析

    一层一层把叶子去掉

    看最多能去掉多少层即可

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int vis[2000100],du[2000100],fa[2000100],n,m,ans;
    int head[2000100],to[4000100],nxt[4000100],cnt; 
    int q[2000100],le,ri;
    inline int ra(){
        int x=0;char s=getchar();
        while(!isdigit(s))s=getchar();
        while(isdigit(s))x=(x<<3)+(x<<1)+(s-'0'),s=getchar();
        return x;
    }
    inline void add(int x,int y){
        nxt[++cnt]=head[x];
        head[x]=cnt;
        to[cnt]=y;
        nxt[++cnt]=head[y];
        head[y]=cnt;
        to[cnt]=x;
    }
    inline void dfs(int x,int f){
        fa[x]=f;
        for(int i=head[x];i;i=nxt[i])
          if(to[i]!=f)dfs(to[i],x);
    }
    int main(){
        int i,j,k;
        n=ra(),k=ra();
        k=n-k;
        for(i=1;i<n;++i){
          int x,y;
          x=ra(),y=ra();
          du[x]++,du[y]++;
          add(x,y);
        }
        dfs(1,0);
        le=1;
        for(i=1;i<=n;++i)if(du[i]==1)q[++ri]=i,vis[i]=1;
        while(ri>=le){
          int x=q[le];
          le++;
          k--;
          ans=max(ans,vis[x]);
          if(!k)break;
          for(i=head[x];i;i=nxt[i]){
              if(du[to[i]]<=1)continue;
              du[to[i]]--;
              vis[to[i]]=max(vis[to[i]],vis[x]+1);
              if(du[to[i]]==1)q[++ri]=to[i];
          }
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    HTML元素 绑定href属性
    form提交不刷新,不跳转页面
    使用MVCPager做AJAX分页所需要注意的地方
    docker基础命令,常用操作
    docker基础
    redis持久化 RDB与AOF
    redis哨兵功能
    redis主从同步
    redis不重启,切换到RDB备份到AOF备份
    redis-cluster(集群)
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/11611729.html
Copyright © 2020-2023  润新知