zoukankan      html  css  js  c++  java
  • 5929 亲戚

    5929 亲戚

     

    时间限制: 1 s
    空间限制: 128000 KB
    题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。

    规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。 

    输入描述 Input Description

    第一行:三个整数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 Description

    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
    数据范围及提示 Data Size & Hint

    题目中已有,不重复解释

     1 #include<cstdio>
     2 int far[5010];
     3 int n,m,q;
     4 int find(int x)  
     5 {
     6     if(x!=far[x])far[x]=find(far[x]);  //并查集优化 
     7     return far[x];
     8 }
     9 int unin(int a,int b)
    10 {
    11     far[b]=a;
    12 }
    13 int main()
    14 {
    15     scanf("%d%d%d",&n,&m,&q);
    16     for(int i=1;i<=n;++i)
    17         far[i]=i;  
    18     for(int i=1;i<=m;++i)
    19     {
    20         int x,y;
    21         scanf("%d%d",&x,&y);
    22         int r=find(x);
    23         int rr=find(y);
    24         if(r!=rr)unin(r,rr);
    25     }
    26     for(int i=1;i<=q;++i)
    27     {
    28         int x,y;
    29         scanf("%d%d",&x,&y);
    30         if(find(x)==find(y))printf("Yes
    ");
    31         else printf("No
    ");
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    DRF (Django REST framework) 框架介绍(2)
    DRF (Django REST framework) 框架介绍(1)
    Django中的Admin站点
    Django中的模板和表单
    Django数据库
    跨站请求伪造CSRF以及Flask中的解决办法
    Flask中的模板,Jinjia2介绍
    Flask中的上下文和flask-script扩展
    化学品撮合交易系统
    化学品产品查询系统解决方案
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6699875.html
Copyright © 2011-2022 走看看