题目大意很简单,按照命令连接节点,findset函数写的时候费了点劲儿,要注意那个累加距离值。
其实因为刚开始学,还是对并查集的查询和连接不是很熟悉,多推几次就好了。
1 #include2 #include 3 #include 4 using namespace std; 5 int set[20010],p[20010]; 6 int findset(int x) 7 { 8 int ans; 9 if(set[x]==x)10 return x;11 else12 {13 ans=findset(set[x]);14 p[x]+=p[set[x]];15 return set[x]=ans;16 }17 }18 int main()19 {20 int T,i;21 scanf("%d",&T);22 while(T--)23 {24 int n,u,v;25 scanf("%d",&n);26 for(int i=0;i