Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int MAXN = 100010;struct Node{int to;int next;}edge[MAXN * 2];int head[MAXN];//头结点int tol;int maxn[MAXN];//该节点往下到叶子的最大距离int smaxn[MAXN];//次大距离int maxid[MAXN];//最大距离对应的序号int smaxid[MAXN];//次大的序号void init(){tol = 0;memset(head, -1, sizeof(head));}void add(int a, int b){edge[tol].to = b;edge[tol].next = head[a];head[a] = tol++;edge[tol].to = a;