zoukankan      html  css  js  c++  java
  • 【TYVJ】1520 树的直径

    【算法】树的直径

    memset(a,0,sizeof(a))

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn=10010;
    struct edge{int from,v,w;}e[maxn*2];
    int tot,X,n,head,tail,q[maxn],d[maxn],first[maxn];
    bool v[maxn];
    void insert(int u,int v,int w)
    {tot++;e[tot].v=v;e[tot].w=w;e[tot].from=first[u];first[u]=tot;}
    void bfs(int s)
    {
        X=0;
        memset(d,0,sizeof(d));
        memset(v,0,sizeof(v));//数组,值,范围 
        head=1;tail=1;q[1]=s;v[s]=1;
        while(head<=tail)
         {
             int u=q[head++];
             if(d[u]>d[X])X=u;
             for(int i=first[u];i;i=e[i].from)
              if(!v[e[i].v])
               {
                   v[e[i].v]=1;
                   d[e[i].v]=d[u]+e[i].w;
                   q[++tail]=e[i].v;
               }
         }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<n;i++)
         {
             int u,v,w;
             scanf("%d%d%d",&u,&v,&w);
             insert(u,v,w);
             insert(v,u,w);
         }
        bfs(1);
        bfs(X);
        printf("%d",d[X]);
        return 0;
    }
    View Code
  • 相关阅读:
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Codeforces Round #551题解
  • 原文地址:https://www.cnblogs.com/onioncyc/p/6399279.html
Copyright © 2011-2022 走看看