码迷,mamicode.com
首页 > 其他好文 > 详细

[2016-03-15][HDU][1213][How Many Tables]

时间:2016-03-17 00:12:52      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

  • 时间:2016-03-15 16:19:15 星期二

  • 题目编号:[2016-03-15][HDU][1213][How Many Tables]

  • 题目大意:请朋友吃饭,每个朋友都不喜欢和不认识的人在一桌,给出认识的关系,问至少要多少桌

  • 输入:

    • t组数
    • 每组数据
    • n m
    • m行 u v 表示u 和 v 认识
  • 输出:

    • 最少
  • 分析:并查集,求集合的数目

  1. #ifdef _WORK_
  2. #include <vector>
  3. #include <list>
  4. #include <map>
  5. #include <set>
  6. #include <deque>
  7. #include <queue>
  8. #include <stack>
  9. #include <bitset>
  10. #include <algorithm>
  11. #include <functional>
  12. #include <numeric>
  13. #include <utility>
  14. #include <sstream>
  15. #include <iostream>
  16. #include <iomanip>
  17. #include <cstdio>
  18. #include <cmath>
  19. #include <cstdlib>
  20. #include <cctype>
  21. #include <string>
  22. #include <cstring>
  23. #include <cstdio>
  24. #include <cmath>
  25. #include <cstdlib>
  26. #include <ctime>
  27. using namespace std;
  28. typedef long long LL;
  29. #define CLR(x,y) memset((x),(y),sizeof((x)))
  30. #define FOR(x,y,z) for(int (x)=(y);(x)<(z);++(x))
  31. #define FORD(x,y,z) for(int (x)=(y);(x)>=(z);--(x))
  32. const int maxn = 1000 + 100;
  33. int fa[maxn],mrank[maxn];
  34. void ini(int n){
  35. memset(mrank,0,sizeof(mrank));
  36. for(int i = 0; i <= n;++i){
  37. fa[i] = i;
  38. }
  39. }
  40. int fnd(int x){
  41. return x ==fa[x]?x:fa[x] = fnd(fa[x]);
  42. }
  43. void uni(int x,int y){
  44. x = fnd(x);y = fnd(y);
  45. if(x == y) return ;
  46. if(mrank[x] < mrank[y]){
  47. fa[x] = y;
  48. }else {
  49. fa[y] = x;
  50. if(mrank[x] == mrank[y]) ++mrank[x];
  51. }
  52. }
  53. int main(){
  54. //freopen("in.txt","r",stdin);
  55. //freopen("out.txt","w",stdout);
  56. int t;
  57. scanf("%d",&t);
  58. while(t--){
  59. int n,m;
  60. scanf("%d%d",&n,&m);
  61. ini(n);
  62. FOR(i,0,m){
  63. int u,v;
  64. scanf("%d%d",&u,&v);
  65. uni(u,v);
  66. }
  67. int ans = 0;
  68. FOR(i,1,n + 1){ if(fa[i] == i)
  69. ++ans;
  70. }
  71. printf("%d\n",ans);
  72. }
  73. return 0;
  74. }
  75. #endif




[2016-03-15][HDU][1213][How Many Tables]

标签:

原文地址:http://www.cnblogs.com/qhy285571052/p/8ed2cdfd7f05329d8539aa040a774553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!