记录编号 594942 评测结果 AAAAAAAAAA
题目名称 消防演练 最终得分 100
用户昵称 Gravatar小金 是否通过 通过
代码语言 C++ 运行时间 0.588 s
提交时间 2024-10-06 12:05:43 内存使用 11.91 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int n,d[200010],ans=0;
vector<int> g[200010];
void q(int x,int fa)
{
    for(int i=0;i<g[x].size();i++)
    {
        if(g[x][i]!=fa) q(g[x][i],x);
    } 
    int s=g[x].size();
    if(fa!=0) s--;    
    d[x]=s;
    int t=0;              
    for(int i=0;i<g[x].size();i++)
    {
        int y=g[x][i];
        if(y==fa) continue;
        d[x]=max(d[x],d[y]+s-1);
        if(fa!=0)
        {
            ans=max(max(ans,d[y]+s),t+d[y]+s-1);
        }
        else
        {
            ans=max(max(ans,d[y]+s-1),t+d[y]+s-2);   
        }
        t=max(t,d[y]);
    }
}
int main()
{
    freopen("drill.in", "r", stdin);
    freopen("drill.out", "w", stdout);
    scanf("%d",&n);
    for(int i=1;i<=n-1;++i)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    q(1,0);
    printf("%d",ans);
    return 0;
}