bool used[3*M],vis[M]; vector<int> a[M]; struct Edge{ int from, to; ll val; bool operator < (const Edge y){ return val < y.val; } }e[3*M]; int F(int x){ if(f[x]==x) return x; return f[x]=F(f[x]); } void kruskal(){ //kruskal 算最大生成树(已保证任意两...