两次dfs
void dfs(int u,int fa ,ll dis)
{
d[u]=dis;
for(int i=h[u];i!=-1;i=ne[i])
{
int j=e[i];
if(j!=fa) dfs(j,u,dis+w[i]);
}
}
PII len()
{
PII ans;
dfs(1,-1,0);
int l=1;
for(int i=1;i<=n;i++)
if(d[i]>d[l]) l=i;
dfs(l,-1,0); int r=1;
for(int i=1;i<=n;i++)
if(d[i]>d[r]) r=i;
ans.first=l,ans.second=r;
return ans;
}