• 1365 浴火银河星际跳跃


    1365 浴火银河星际跳跃

     

    时间限制: 1 s
    空间限制: 128000 KB
    题目等级 : 黄金 Gold
     
     
     
     
    题目描述 Description
    小 K 又在玩浴火银河了。。。不过这次他的目的不是跑运输赚钱,而
    是做任务赚钱。
    他想知道关于一个任务的两个星系是否可以连通。
    输入描述 Input Description
    第一行,三个数,X,N,M
    X 表示出现的星系代号的最大值;
    N 表示有 N 个星际跳跃门;
    M 表示有 M 个任务。
    接下来的 N 行描述每个星际跳跃门:每行为两个数字(星系代号),
    星际跳跃门连通这两个星系(星际跳跃门是可以双向通行的)
    接下来的 M 行表示每个任务需要到达的星系,每个任务需要到达两
    个星系。
    输出描述 Output Description
    共 M 行。
    第 i 行表示第 i 个任务是否能完成:即两个星系是否能连通。(能→
    Yes;不能→No)
    样例输入 Sample Input
    5 2 1
    3 5
    4 5
    3 4
    样例输出 Sample Output

    Yes

    数据范围及提示 Data Size & Hint

    最大数据第一行:19999 17542 1664

    分类标签 Tags 点此展开

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int MAXN=100001;
     6 int f[MAXN];
     7 int find(int x)
     8 {
     9     if(f[x]!=x)
    10     f[x]=find(f[x]);
    11     return f[x];
    12 }
    13 void unionn(int x,int y)
    14 {
    15     int fx=find(x);
    16     int fy=find(y);
    17     f[fx]=fy;
    18 }
    19 int main()
    20 {
    21     int x,n,m;
    22     scanf("%d%d%d",&x,&n,&m);
    23     for(int i=1;i<=x;i++)f[i]=i;
    24     for(int i=1;i<=n;i++)
    25     {
    26         int x,y;
    27         scanf("%d%d",&x,&y);
    28         unionn(x,y);
    29     }
    30     for(int i=1;i<=m;i++)
    31     {
    32         int x,y;
    33         scanf("%d%d",&x,&y);
    34         if(find(x)==find(y))
    35         {
    36             printf("Yes
    ");
    37         }
    38         else
    39         {
    40             printf("No
    ");
    41         }
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    运维常用python库&模块
    find&正则表达式
    博客园背景粒子连线代码
    xshell几款绝佳配色方案
    解决ssh连接超时(ssh timeout)的方法
    Java-计划存储
    @Repository、@Service、@Controller 和 @Component
    帮助对@Repository注解的理解
    Struts 2学习笔记——拦截器相关
    JAVA UUID 生成
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6723576.html
Copyright © 2020-2023  润新知