#include<bits/stdc++.h>
using namespace std;
struct edge{
int to,next,v;
}e[40001];
int n,cnt,ans,root,sum,head[20001],son[20001],f[20001],d[20001],t[3];
bool vis[20001];
inline int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
inline void insert(int u,int v,int w){
e[++cnt]=(edge){v,head[u],w};head[u]=cnt;
e[++cnt]=(edge){u,head[v],w};head[v]=cnt;
}
inline void getroot(int x,int fa){
son[x]=1;f[x]=0;
for(int i=head[x];i;i=e[i].next){
if(e[i].to==fa||vis[e[i].to])continue;
......
阅读全文