zoukankan      html  css  js  c++  java
  • POJ 1985 Cow Marathon【树的直径】

    题目大意:给你一棵树,要你求树的直径的长度

    思路:随便找个点bfs出最长的点,那个点一定是一条直径的起点,再从那个点BFS出最长点即可

    以下研究了半天才敢交,1.这题的输入格式遵照poj1984,其实就是把后面的字母无视即可 2.这题数据量没给,所以把数组开得很大才敢交TUT

    #include <stdio.h>

    #include <iostream>

    #include <string.h>

    #include <algorithm>

    #include <queue>

    #define maxn 120090

    #define esp 0.00001

    #define inf 0x3f3f3f3f

    using namespace std;

    int head[maxn],value[maxn],next[maxn],point[maxn];

    int now=0,dist[maxn],x,y,v,ans;

    void add(int x,int y,int v)

    {

        next[++now]=head[x];

        head[x]=now;

        point[now]=y;

        value[now]=v;

    }

    int bfs(int s)

    {

        queue<int>q;

        q.push(s);

        memset(dist,-1,sizeof(dist));

        dist[s]=0;

        int maxx=0,maxj=-1;

        while(!q.empty())

        {

            int u=q.front();

            q.pop();

            for(int i=head[u];i;i=next[i])

            {

                int k=point[i];

                if(dist[k]==-1)

                {

                    dist[k]=dist[u]+value[i];

                    if(dist[k]>maxx)

                    {

                        maxx=dist[k];

                        maxj=k;

                    }

                    q.push(k);

                }

            }

        }

        ans=maxx;

        return maxj;

    }

    int main()

    {

        int n,m;

        char ch[10];

        scanf("%d%d",&n,&m);

        for(int i=1;i<=m;i++)

        {

            scanf("%d%d%d%s",&x,&y,&v,ch);

            add(x,y,v);

            add(y,x,v);

        }

        int u=bfs(1);

        ans=0;

        bfs(u);

        printf("%d ",ans);

        return 0;

    }

  • 相关阅读:
    面向对象编程,其属性特性,用法等
    re正则模块细解,面向对象编程思路的优劣。
    机器人学——1.2-三维空间位姿描述
    机器人学——1.1-二维空间位姿描述
    机器人学——1.0-位置与姿态概述
    latex教程:1.2-latex现状
    latex教程: 1.1-历史
    windows安装opencv
    使用pip安装Opencv
    在Ubuntu上安装opencv-python
  • 原文地址:https://www.cnblogs.com/philippica/p/4128510.html
Copyright © 2011-2022 走看看