这份代码多输入了两个数,没有TLE和WA,反而AC了,是因为数据太水了吗?
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
struct node
{
int nxt,to;
}e[30000];
int head[30000],f[30000],g[30000],cnt=0,ans=0;
void add(int u,int v)
{
cnt++;
e[cnt].nxt=head[u];
e[cnt].to=v;
head[u]=cnt;
}
void dfs(int x,int fa)
{
f[x]=g[x]=0;
for(int i=head[x];i!=0;i=e[i].nxt)
{
if(e[i].to!=fa)
{
dfs(e[i].to,x);
if(f[e[i].to]+1>f[x])
{
g[x]=f[x];
f[x]=f[e[i].to]+1;
}
else
{
g[x]=max(g[x],f[e[i].to]+1);
}
}
}
ans=max(ans,f[x]+g[x]);
}
int main()
{
int n,i,u,v;
cin>>n;
for(i=1;i<=n;i++)//这里多输入了两个数
{
cin>>u>>v;
add(u,v);
add(v,u);
}
dfs(1,0);
cout<<ans<<endl;
return 0;
}