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

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #define N 10010
    using namespace std;
    struct node
    {
        int u,v,w,nxt;
    }e[N*2];
    int first[N],cnt;
    void ade(int u,int v,int w)
    {
        e[++cnt].nxt=first[u]; first[u]=cnt;
        e[cnt].u=u; e[cnt].v=v; e[cnt].w=w;
    }
    int n,m;
    bool vis[N];
    int dis[N];
    void bfs(int x)
    {
        queue<int>q;
        q.push(x);vis[x]=1;
        while(!q.empty())
        {
            int u=q.front(); q.pop();
            for(int i=first[u];i;i=e[i].nxt)
            {
                int v=e[i].v;
                if(vis[v]) continue;
                dis[v]=dis[u]+e[i].w;
                vis[v]=1;
                q.push(v);
            }
        }
    }
    int maxx,pos;
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1,x,y,z;i<=m;i++)
        {
            scanf("%d%d%d",&x,&y,&z);
            ade(x,y,z);
        }
        bfs(1);
        for(int i=1;i<=n;i++)
        {
            if(maxx<dis[i])
            {
                maxx=dis[i];
                pos=i;
            }
        }
        //cout<<pos<<" "<<maxx<<endl;
        memset(dis,0,sizeof(dis));
        memset(vis,0,sizeof(vis));
        bfs(pos);
        int maxb=0,posb=0;
        for(int i=1;i<=n;i++)
        {
            if(maxb<dis[i])
            {
                maxb=dis[i];
                posb=i;
            }
        }
        //cout<<posb<<" "<<maxb;
        printf("%d",maxb);
        return 0;
    }
  • 相关阅读:
    php 生成唯一订单号
    易语言的软件乱码
    Python正则
    python3.6 安装
    python发送邮件
    python 字典生成sql语句
    python xpath
    Python pip安装Scrapy,报错Twisted
    简单验证码识别
    python mysqldb 返回字典
  • 原文地址:https://www.cnblogs.com/kylara/p/9735083.html
Copyright © 2011-2022 走看看