题目来源:

pid=2473">HDU 2473 Junk-Mail Filter

题意:2中操作 M x, y 将x,y 合并到一个集合 S x 将x从所在的集合去掉 自己成为一个集合 最后求有多少个集合

思路:删点不好做 能够假设0 1 2在一个集合 能够定义个数组映射 就是每一个点所相应实际的点 開始是a[0] = 0 a[1] = 1 a[2] = 2

如今要去掉2 能够定义一个新的点 原来的要删的点留着 原来a[2] = 2 a[2] = 3 如今的3就是原来的第二个2点 仅仅只是名字换成3了 a[2] = 3 以后訪问第二个点 都訪问a[2]

  1. #include <cstdio>
  2. #include <cstring>
  3. using namespace std;
  4. const int maxn = 1100010;
  5. int f[maxn], a[maxn], flag[maxn];
  6. int cnt;
  7.  
  8. void init(int n)
  9. {
  10. for(int i = 1; i <= n; i++)
  11. f[i] = a[i] = i;
  12. cnt = n;
  13. memset(flag, 0, sizeof(flag));
  14. }
  15.  
  16. int find(int x)
  17. {
  18. if(x != f[x])
  19. return f[x] = find(f[x]);
  20. return f[x];
  21. }
  22.  
  23. void merge(int x, int y)
  24. {
  25. x = find(x);
  26. y = find(y);
  27. if(x != y)
  28. f[x] = y;
  29. }
  30. void del(int x)
  31. {
  32. find(a[x]);
  33. f[++cnt] = cnt;
  34. a[x] = cnt;
  35. }
  36. int main()
  37. {
  38. int cas = 1;
  39. int T;
  40. int n, m;
  41. while(scanf("%d %d", &n, &m) && (n||m))
  42. {
  43. init(n);
  44. while(m--)
  45. {
  46. char s[10];
  47. scanf("%s", s);
  48. if(s[0] == 'S')
  49. {
  50. int x;
  51. scanf("%d", &x);
  52. x++;
  53. del(x);
  54. }
  55. else
  56. {
  57. int x, y;
  58. scanf("%d %d", &x, &y);
  59. x++, y++;
  60. merge(a[x], a[y]);
  61. }
  62. }
  63. int ans = 0;
  64. for(int i = 1; i <= n; i++)
  65. {
  66. int x = find(a[i]);
  67. if(!flag[x])
  68. {
  69. ans++;
  70. flag[x] = 1;
  71. }
  72. }
  73. printf("Case #%d: %d\n", cas++, ans);
  74. }
  75. return 0;
  76. }

HDU 2473 Junk-Mail Filter 删点并查集的更多相关文章

  1. hdu 2473 Junk-Mail Filter (暴力并查集)

    Problem - 2473 为什么标题写的是暴力并查集?因为我的解法跟网上的有所不同,方法暴力很多. 先解释题意,这是一个模拟处理垃圾邮件的问题.垃圾邮件要根据它们的性质进行分类.对于10w个邮件, ...

  2. HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)

    题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...

  3. HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connecte ...

  4. ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线

    hdu 1811 Rank of Tetris Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

  5. HDU(1856),裸的带权并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856 题意:朋友圈问题,A和B是朋友,B和C是朋友则A和C也是朋友,依次类推,题目的意思就是求最大的朋 ...

  6. HDU 1598 find the most comfortable road 并查集+贪心

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000 ...

  7. HDU 1213 How Many Tables(模板——并查集)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 Problem Description Today is Ignatius' birthday ...

  8. hdu 1811 Rank of Tetris - 拓扑排序 - 并查集

    自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...

  9. HDU 3047 Zjnu Stadium(带权并查集)

    http://acm.hdu.edu.cn/showproblem.php?pid=3047 题意: 给出n个座位,有m次询问,每次a,b,d表示b要在a右边d个位置处,问有几个询问是错误的. 思路: ...

随机推荐

  1. jmeter作接口测试入门的简单使用说明

    一.添加接口信息 1.添加线程组 (1)路径如下图: (2)部分内容解释 a.  Number of Threads(users):线程数 b.  Ramp-Up Period(in seconds) ...

  2. 第一个nodejs爬虫:爬取豆瓣电影图片

    第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require( ...

  3. tableView镶嵌加入CollectionView实现方法

    创建一个继承UICollectionView的类QHCollectionView在QHCollectionView.h中添加接口方法 @interface QHCollectionView : UIC ...

  4. Linux下实现mysql数据库每天自动备份

    Linux下实现mysql数据库每天自动备份 1.基本操作步骤 a.创建备份目录 mkdir -m 777 /home/wwwroot/backup b.创建备份脚本sh vim /home/wwwr ...

  5. Linux常用命令使用

    系统基础相关 使用root用户的环境变量切换到root用户 su - 显示当前工作路径 pwd 显示当前系统默认语言及键盘布局 localectl 显示系统中能支持的所有语言 localectl li ...

  6. HDU 6227.Rabbits-规律 (2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学))

    Rabbits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total S ...

  7. openshift scc解析

    SCC使用UserID,FsGroupID以及supplemental group ID和SELinux label等策略,通过校验Pod定义的ID是否在有效范围内来限制pod的权限.如果校验失败,则 ...

  8. ZFS -世界上最高级的文件系统之一

    https://www.oschina.net/news/44302/openzfs_launch_announcement https://en.wikipedia.org/wiki/ZFS ZFS ...

  9. mysql之创建数据库,创建数据表

    写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...

  10. Beginning Auto Layout Tutorial in iOS 7: Part 6

    Gallery example 屏幕有四个分开的相同的矩形,每个矩形有一个label和一个image view.创建一个Gallery的项目.在Main.storyboard中,拖拉一个view大小为 ...