家族

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://www.codevs.cn/problem/1073/

Description

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。

Input

第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有 n个人,m个亲戚关系,询问p对亲戚关系。 以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。 接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。

Output

P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。

Sample Input

6 5 3

1 2

1 5

3 4

5 2

1 3

1 4

2 3

5 6

Sample Output

Yes

Yes

No

HINT

 n<=5000,m<=5000,p<=5000

题意

题解:

并查集嘛,然后搞一搞,注意路径压缩就好了

不过我用的递归版本,然而并没有RE,非常开心

代码:

  1. //qscqesze
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <ctime>
  6. #include <iostream>
  7. #include <algorithm>
  8. #include <set>
  9. #include <vector>
  10. #include <sstream>
  11. #include <queue>
  12. #include <typeinfo>
  13. #include <fstream>
  14. #include <map>
  15. typedef long long ll;
  16. using namespace std;
  17. //freopen("D.in","r",stdin);
  18. //freopen("D.out","w",stdout);
  19. #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
  20. #define maxn 200001
  21. #define mod 10007
  22. #define eps 1e-9
  23. //const int inf=0x7fffffff; //无限大
  24. const int inf=0x3f3f3f3f;
  25. /*
  26. inline ll read()
  27. {
  28. int x=0,f=1;char ch=getchar();
  29. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  30. while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
  31. return x*f;
  32. }
  33. int buf[10];
  34. inline void write(int i) {
  35. int p = 0;if(i == 0) p++;
  36. else while(i) {buf[p++] = i % 10;i /= 10;}
  37. for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);
  38. printf("\n");
  39. }
  40. */
  41. //**************************************************************************************
  42. inline ll read()
  43. {
  44. int x=,f=;char ch=getchar();
  45. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  46. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  47. return x*f;
  48. }
  49. int fa[maxn];
  50. int fi(int x)
  51. {
  52. if(x!=fa[x])
  53. fa[x]=fi(fa[x]);
  54. return fa[x];
  55. }
  56. void un(int x,int y)
  57. {
  58. int a=fi(x),b=fi(y);
  59. if(a!=b)
  60. {
  61. fa[b]=a;
  62. }
  63. }
  64. int main()
  65. {
  66. int n=read(),m=read(),q=read();
  67. for(int i=;i<=n;i++)
  68. fa[i]=i;
  69. for(int i=;i<m;i++)
  70. {
  71. int a=read(),b=read();
  72. un(a,b);
  73. //cout<<fa[a]<<" "<<fa[b]<<" "<<"123123123"<<endl;
  74. }
  75. for(int i=;i<q;i++)
  76. {
  77. int a=read(),b=read();
  78. if(fi(a)==fi(b))
  79. {
  80. printf("Yes\n");
  81. }
  82. else
  83. printf("No\n");
  84. }
  85. }

codevs 1073 家族 并查集的更多相关文章

  1. CODEVS 1073 家族

    题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和 ...

  2. Vijos 1034 家族 并查集

    描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...

  3. Codevs 2597 团伙(并查集)

    2597 团伙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么 ...

  4. [tsA1491][2013中国国家集训队第二次作业]家族[并查集]

    m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了... #include <bits/stdc++.h> using namespace std; struct tri { i ...

  5. AC日记——舒适的路线 codevs 1001 (并查集+乱搞)

    1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description Z小镇是 ...

  6. codevs 必做:堆:1245、2879 并查集:1069、1074、1073

    1245 最小的N个和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 有两个长度为 N ...

  7. [codevs 1995]黑魔法师之门(并查集)

    题目:http://codevs.cn/problem/1995/ 分析:脑补一下满足题目要求的子图肯定就是环……于是题目就变成了不断加边求环的个数.看起来有点麻烦……但是环的实质是几个小环组合起来的 ...

  8. 家族(codevs 1073)

    题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和 ...

  9. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

随机推荐

  1. Jenkins远程调度Shell命令

    http://blog.csdn.net/fireofjava/article/details/40624353 Jenkins服务器为Win7版本,需要远程调用CentOS服务器上Shell脚本,然 ...

  2. dstat 服务器性能查看命令【转】

    一. 安装和简解 # yum -y install dstat# dstat CPU状态:CPU的使用率.这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况.如果你看 ...

  3. Python [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法

    一个搭建在SAE上的Django应用,使用新浪微博提供的Python SDK已经稳定运行一年有余,但最近开始持续出现微博认证失败的状况. 摘录微博python SDK的错误提示如下所示: ERROR: ...

  4. DevExpress CxGrid 隐藏 Drag a column header to group by that column

  5. FZU 1901 Period II(KMP循环节+公共前后缀)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901 题目大意:题目大意求出所有p满足s[i]=s[i+p](i<=len-p) 解题思路: 其实就是要 ...

  6. C/C++之static

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  7. SQL存储过程相关信息查看

    --1.查看所有存储过程与函数      exec sp_stored_procedures     或者      select * from dbo.sysobjects where OBJECT ...

  8. linux虚拟机磁盘不够用以及进行扩容时遇到的问题

    我使用的是:gparted live cd工具  系统是centOS6.2 使用gparted live cd工具进行无损分区,方法很简单,下载iso文件都在VMware对应的linux系统上设置CD ...

  9. ASP.NET MVC5+ 路由特性

    概述 ASP.NET MVC 5支持一种新的路由协议,称为路由特性. MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 案例 1.使用Visual Studio 20 ...

  10. MVC文件上传

    这次来看下一个MVC网站上传文件的功能,其中上传用到uploadify这个jquery插件,网上还有很多类似的,哪种都无所谓,能实现功能便行,貌似uploadify官网上的这个插件是要付费的,这里就顺 ...