zoukankan      html  css  js  c++  java
  • 树的直径

    NOIP2018 Day1t3 的20分部分分,考场上忘记了怎么写,于是score-=10  [蒟蒻]

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define MAXN 100005
    using namespace std;
    
    inline int read()
    {
        int f=1,x=0;
        char ch=getchar();
        while(ch<'0' || ch>'9') {if(ch=='-') f=-1; ch=getchar();}
        while(ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    
    int n,cnt,ans;
    int v[MAXN<<1],head[MAXN],nxt[MAXN<<1];
    int d1[MAXN],d2[MAXN];
    
    void add(int a,int b)
    {
        v[++cnt]=b;
        nxt[cnt]=head[a];
        head[a]=cnt;
    }
    
    int dfs(int x,int fa)
    {
        for(int i=head[x];i;i=nxt[i])
        {
            if(v[i]==fa) continue;
            int d=dfs(v[i],x)+1;
            if(d>d1[x])
            {
                d2[x]=d1[x];
                d1[x]=d;
            }
            else if(d>d2[x])
                d2[x]=d;
        }
        ans=max(ans,d1[x]+d2[x]);
        return d1[x];
    }
    
    int main()
    {
        int i;
        int a,b,c;
        n=read();
        for(i=1;i<n;i++)
        {
            a=read();
            b=read();
            add(a,b);
            add(b,a);
        }
        dfs(1,0);
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    websocket 学习笔记
    oxy 学习笔记
    postcss
    一致性hash和chord
    leveldb 学习笔记
    logrus 学习笔记
    viper 学习笔记
    redigo 学习笔记
    gin 学习笔记
    修改TOMCAT的JVM虚拟机内存大小几种方式
  • 原文地址:https://www.cnblogs.com/llllllpppppp/p/10049884.html
Copyright © 2011-2022 走看看