/*贡献出无数WA, 就因为一个地方写错, 悲剧的一晚上啊!不过能过了还是很爽的。

  思路:用Trie树给字符串重新标号,然后用并查集,用一个a[i] 记录当前并查集跟结点上连接的结点数。*/

#include <iostream>#include <cstdio>#include <cstring>

using namespace std;

struct node{int flag;    node * next[53];};

const int N = 200005;

int parent[N];int rank[N];int a[N];int num;

node * newnode(){    node *p = new node;    p->flag = 0;for(int i = 0; i < 52; i++)        p->next[i] = NULL;return p;}

int insert(node *root, char *s){    node *p = root;int i, len = strlen(s), t;for(i = 0; i < len; i++)    {if(isupper(s[i]))            t = s[i] - 'A';else            t = s[i] - 'a' + 26;

if(p->next[t] == NULL)            p->next[t] = newnode();        p = p->next[t];    }if(p->flag)return p->flag;else    {        p->flag = num++;return p->flag;    }}

void del(node *p){if(p)    {for(int i = 0; i < 52; i++)if(p->next[i])                del(p->next[i]);    }    delete p;    p = NULL;}

void init(){for(int i = 0; i < N; i++)    {        parent[i] = i;        a[i] = 1;    }}int find(int x){int k = x, r = x, j;while(r != parent[r])        r = parent[r];while(k != r)    {        j = parent[k];        parent[k] = r;        k = j;    }return r;}

void union_set(int x, int y){    x = find(x);    y = find(y);

if(x == y)    return ;

    parent[x] = y;    a[y] += a[x];}

int main(){//freopen("data.in", "r", stdin);

int t, n, x, y;char s1[35], s2[35];

    node * root;

while(scanf("%d", &t) != EOF)    {while(t--)        {            scanf("%d", &n);

if(n == 0)            {                printf("0\n");continue;            }

            init(); num = 1;            root = newnode();

while(n--)            {                scanf("%s%s", s1, s2);

                x = insert(root, s1);                y = insert(root, s2);

                union_set(x, y);                printf("%d\n", a[find(y)]);   //一直写成a[y],贡献出无数WA!!!
            }            del(root);        }    }return 0;}

  

HDU_Virtual Friends (并查集)相关推荐

  1. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  2. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  3. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  4. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  5. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  6. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  7. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  8. 1013 Battle Over Cities(并查集解法)

    关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...

  9. 并查集专题练习:好朋友(未完待续)

    有空再把题目补上 输入样例1 4 2 1 4 2 3 样例输出1 2 输入样例2 7 5 1 2 2 3 3 1 1 4 5 6 输出样例2 3 解题思路: 1. 这题放在并查集的专题后面,有查找也有 ...

最新文章

  1. div溢出显示时用省略号结尾 .
  2. Serv-u 10.3 的图文安装教程及使用方法
  3. 14 张Python数据科学速查表
  4. pr文字转语音有插件吗_文字转语音软件深度解析
  5. 拥抱新技术的一点思考
  6. python的类之新类与旧类
  7. dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...
  8. Jug 并行处理框架
  9. Mac上WineSkin游戏无法正常运行
  10. 纯C#实现的DHT爬虫和磁力搜索引擎 - btcherry.com
  11. win10安装免安装版的mysql5.7
  12. 愿你一直能够撑下去!
  13. c语言数字大小排序的理解,教孩子数字比大小,排序很重要
  14. 基于双向 GRU 的文本分类 Python 算法实战
  15. 《Python编程从入门到实践 第二版》第八章练习
  16. 高等数学笔记-乐经良老师-第六章-微分方程
  17. 计算机控制系统设计题例题,计算机控制系统练习题..doc
  18. 控制反转思想的理解实例
  19. ISP—图像调试实习生(第14天)
  20. 工业网关下工业自动化设备远程监控解决方案

热门文章

  1. 前沿丨DeepMind提出神经元删除法:通过理解每个神经元来理解深度学习
  2. 心得丨在人工智能领域, 开发人员需要什么技能?
  3. 心得丨对于机器学习,到底该选择哪种编程语言
  4. 重磅!监管再升级!微信、淘宝、抖音或将纳入“超级平台”监管
  5. 【周末阅读】工业互联网的发展历程及实现路径
  6. 清华大学施路平:发展人工通用智能最好的时机到了!
  7. W3C 战败:无权再制定 HTML 和 DOM 标准!
  8. 雷军狂撒 20 亿 ,给小米、金山员工豪派“大红包”,网友:又是别人家的公司!...
  9. 12306 背后的技术大牛:我不跟人拼智商,我就跟他们拼狠!
  10. 用程序消除一道概率题的二义性