2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵

https://nanti.jisuanke.com/t/39260

根据题意我们可以知道  这是一个树 我们只需要找到出度最大的两个点就好了

如果包含根节点的话要-- 两个点相邻的话也要--

数据很水 不需要想太复杂

#include<bits/stdc++.h>

using namespace std;

typedef struct
{
    int n;
    int add;
}node;
node a[5005]; 
int m[5005][5005];
bool cmp (node a,node b)
{
    return a.n>b.n;
}


int main()
{
    int n,i;
    cin>>n;
    for(i=1;i<n;i++)
    {
        a[i].add=i;
    }
    for(i=0;i<n-1;i++)
    {
        int x,y;
        cin>>x>>y;
        m[x][y]=1;
        a[x].n++;
    }
    sort(a+1,a+n+1,cmp);
    node n1=a[1];
    node n2=a[2];
    int anss=n1.n+n2.n+1;
    if(n1.add==1||n2.add==1)
    anss--;
    if(m[n1.add][n2.add])
    anss--;
    cout<<anss<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/dyhaohaoxuexi/p/10924411.html