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; }
原文:https://www.cnblogs.com/dyhaohaoxuexi/p/10924411.html