牛客小白月赛6-C桃花-树直径

  1. *树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径

链接:https://www.nowcoder.com/acm/contest/136/C

来源:牛客网

题目描述

    桃花一簇开无主,可爱深红映浅红。

                                        ——《题百叶桃花》

    桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花,由于HtBest法力有限,只能使用一次魔法棒,请求出Htbest最多可以摘到多少个桃花。

输入描述:

第一行有一个正整数n,表示桃树的节点个数。
接下来n-1行,第i行两个正整数ai,bi ,表示桃树上的节点ai,bi之间有一条边。

输出描述:

第一行一个整数,表示HtBest使用一次魔法棒最多可以摘到多少桃花。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
#include<set>
#include<vector>
#include<sstream>
#include<queue>
#define ll long long
#define PI 3.1415926535897932384626
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1e6+10;
struct Edge
{
    int to,next;
    int flag;
}edge[maxn];
int tot;
int head[maxn];
int maxs;
int vis[maxn];
template <class T>
struct node
{
    int v,setp;
};
void init()
{
    tot=1;
    memset(head,-1,sizeof(head));
}
void addedge(int u,int v)
{
    edge[tot].to=v;
    edge[tot].next=head[u];
    head[u]=tot++;
}
int bfs(int x)
{
    memset(vis,0,sizeof(vis));
    node start,next;
    queue<node>q;
    start.v=x;
    start.setp=1;
    q.push(start);
    int t;
    while(!q.empty())
    {
        start=q.front();
        q.pop();
        for(int i=head[start.v];i!=-1;i=edge[i].next)
        {
            if(!vis[edge[i].to]){
                next.v=edge[i].to;
                next.setp=start.setp+1;
                q.push(next);
                vis[next.v]=1;
                if(next.setp>maxs)
                {
                    maxs=next.setp;
                    t=next.v;
                }
            }
        }
    }
    return t;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        init();
        for(int i=1;i<=n-1;i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            addedge(u,v);
            addedge(v,u);
        }
        maxs=0;
        int point=bfs(bfs(1));
        printf("%d\n",maxs);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41568836/article/details/81875262
今日推荐