Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<set>using namespace std;const int MAXN =(int)1e5+10;struct node{int u,v,w,idx;}p[MAXN<<1];int au[MAXN],av[MAXN];set<int>s[MAXN];set<int>::iterator it;bool cmp(const node &a,const node &b){return a.w<b.w;}int fx[MAXN];int fi(int a){if(fx[a]!=a)fx[a]=fi(fx[a]);return fx[a];}int mark[MAXN],idx[MAXN];void merge(int &a,int &b){if(s[a].size()<s[b].size())swap(a,b);for(it=s[b].begin();it!=s[b].end();it++){s[a].insert(*it);}b=a;}int main(){