博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vijos-1034-家族
阅读量:6087 次
发布时间:2019-06-20

本文共 1307 字,大约阅读时间需要 4 分钟。

  • 数据输入:
  • 第一行:三个整数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是否具有亲戚关系。
  • 数据输出:
  • P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。
    样例:
    input.txt
    6 5 3
    1 2
    1 5
    3 4
    5 2
    1 3
    1 4
    2 3
    5 6
    output.txt
    Yes
    Yes
    No
  • 这个题目是最基础的并查集问题
    运用基本的并查集工具就可以解决了
  • 1 #include 
    2 #include
    3 #include
    4 const int N=5100; 5 int ai,aj,pi,pj; 6 int m,n,p; 7 int pa[N]; 8 int cha(int k) 9 {10 if(pa[k]!=k)11 {12 pa[k]=cha(pa[k]);13 }14 return pa[k];15 }16 bool bing(int x,int y)17 {18 int x2=cha(x);19 int y2=cha(y);20 if(x2==y2)21 return false;22 pa[y2]=x2;23 return true;24 }25 int main()26 {27 while(scanf("%d%d%d",&n,&m,&p)!=EOF)28 {29 for(int i=0;i<=n;i++)30 {31 pa[i]=i;32 }33 for(int i=1;i<=m;i++)34 {35 scanf("%d%d",&ai,&aj);36 bing(ai,aj);37 }38 for(int i=1;i<=p;i++)39 {40 scanf("%d%d",&pi,&pj);41 if(cha(pi)==cha(pj))42 printf("Yes\n");43 else44 printf("No\n");45 }46 }47 return 0;48 }

     

转载于:https://www.cnblogs.com/tianmin123/p/4617773.html

你可能感兴趣的文章
centos6.x升级内核
查看>>
开卷有益的《开源技术选型手册》
查看>>
类似百度地图实现步骤的简单分析
查看>>
MySQL的btree索引和hash索引的区别
查看>>
独家评测施耐德电气智能微型数据中心:产品与智能化管理的最佳实践
查看>>
沟通CTBS立白集团远程接入成功案例
查看>>
数据库维护
查看>>
scp报错:not a regular file
查看>>
打造XP系统万能克隆-Ghost全攻略
查看>>
2016年宜昌楼市将迎来史上最激烈一战
查看>>
spark和zeppelin实践一:安装hadoop篇
查看>>
msyql 5.6主主双活配置—-基于bin-log
查看>>
Day 5 - 编写Web框架 代码优化
查看>>
centos+k8s+docker部署
查看>>
oracle 给表和字段添加注释
查看>>
windows如何禁用系统软件自动更新
查看>>
cisco官方的STP
查看>>
React中的vue的v-for操作。
查看>>
sed学习
查看>>
python 安装easy_install和pip
查看>>