• LA3027(并查集)


    题目大意很简单,按照命令连接节点,findset函数写的时候费了点劲儿,要注意那个累加距离值。

    其实因为刚开始学,还是对并查集的查询和连接不是很熟悉,多推几次就好了。

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     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     else
    12     {
    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<n;i++)
    27         {
    28             set[i]=i;p[i]=0;
    29         }
    30         char s[10];
    31         while(scanf("%s",s)&&s[0]!='O')
    32         {
    33             if(s[0]=='I')
    34             {
    35                 scanf("%d%d",&u,&v);
    36                 set[u]=v;
    37                 p[u]=(abs(u-v)%1000);
    38             }
    39             else
    40             {
    41                 scanf("%d",&u);findset(u);
    42                 printf("%d
    ",p[u]);
    43             }
    44         }
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    win7如何配置access数据源
    pcA降维算法
    今天的分类
    实现MFC菜单画笔画圆,并且打钩
    多个字符串输出,竖直输出
    端口重用
    安卓快速关机APP
    端口转发
    学习OpenCV
    求解数独
  • 原文地址:https://www.cnblogs.com/Acgsws/p/3221613.html
Copyright © 2020-2023  润新知