zoukankan      html  css  js  c++  java
  • 123.约会计划(并查集)

    2639 约会计划

     

     时间限制: 1 s
     空间限制: 64000 KB
     题目等级 : 白银 Silver
    题目描述 Description

    cc是个超级帅哥,口才又好,rp极高(这句话似乎降rp),又非常的幽默,所以很多mm都跟他关系不错。然而,最关键的是,cc能够很好的调解各各妹妹间的关系。mm之间的关系及其复杂,cc必须严格掌握她们之间的朋友关系,好一起约她们出去,cc要是和不是朋友的两个mm出去玩,后果不堪设想……
    cc只掌握着一些mm之间的关系,但是cc比较聪明,他知道a和b是朋友,b和c 是朋友,那么a和c也是朋友。
    下面给出m对朋友关系, cc 定了p次约会,每次约会找两个mm,如果这两个mm是朋友,那么不会出乱子,输出‘safe',要是不是朋友,那么cc必然会挨……,输出‘cc cry'

    输入描述 Input Description

    第一行为n,m,p。n为mm的数量,cc知道m对朋友关系,有p次约会。
    2到n+1 行,每行一个字符串,为第i个mm的名字。{字符串长度<=11,且全大写}
    以下m行,每行两个字符串,用空格隔开,为有朋友关系的两个mm的名字。
    以下p行,每行为两个字符串,用空格隔开,为这p次约会中两个mm的名字。
    {保证数据不会出现没有出现过的名字}

    输出描述 Output Description

    输出P行表示第i次约会的情况,输出‘safe'或者‘cc cry'

    样例输入 Sample Input

    3 1 1
    AAA
    BBB
    CCC
    AAA CCC
    AAA BBB

    样例输出 Sample Output

    cc cry

    数据范围及提示 Data Size & Hint

    0
    0

    分类标签 Tags 点此展开 

    代码:
    #include< iostream >
    #include< cstdio >
    using namespace std;
    string mm[2008*2+1];
    int father[2008*2+1],n,m,p;
    void input()
    {
    scanf("%d%d%d",&n,&m,&p);
    for(int i=1;i<=n;++i)
    cin>>mm[i];
    }
    int find(int x)
    {
    if(father[x]!=x) return father[x]=find(father[x]);
    return father[x];
    }
    void unionn(int a,int b)
    {
    father[b]=a;
    }
    void link()
    {
    for(int i=1;i<=n;++i)
    father[i]=i;
    string a,b;
    for(int i=1;i<=m;++i)
        {
        int k=0,l=0;
    cin>>a>>b;
        for(int j=1;j<=n;++j)
        {
        if(mm[j]==a)
        k=j;
        if(mm[j]==b)
        l=j;
        // if(k&&l)不知道为什么去了这两句后,结果就对了 
        // break;
    }
    int r1=find(k),r2=find(l);
    if(r1!=r2)
    unionn(r1,r2);
    }
    }
    void judge()
    {
    string a,b;
    int k=0,l=0;
    for(int i=1;i<=p;++i)
    {
    cin>>a>>b;
    for(int j=1;j<=n;++j)
    {
    if(mm[j]==a)
        k=j;
        if(mm[j]==b)
        l=j;
        // if(k&&l)不知道为什么去了这两句后,结果就对了 
        // break;
    }
    if(find(k)!=find(l))
    printf("cc cry ");
    else printf("safe ");
    }
    }
    int main()
    {
    input();
    link();
    judge();
    return 0;
    }
  • 相关阅读:
    目录-富爸爸穷爸爸
    目录-高效能人士的七个习惯(精华版)
    目录-卓有成效的管理者
    计算机网络自顶向下方法目录
    计算机网络_第7版_谢希仁_目录
    计算机网络各层协议
    TCP_IP详解卷一目录
    http 权威指南 目录
    Redis 知识体系
    Apache Commons 列表
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370690.html
Copyright © 2011-2022 走看看