zoukankan      html  css  js  c++  java
  • codevs 2639 约会计划

    题目描述 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<m<=2008
    0<p<=2008

    思路:

    map+并查集。

    代码:

    #include<cstdio>
    #include<map>
    #include<string>
    #include<iostream>
    using namespace std;
    map<string,int>a;
    string s,ss;
    int n,m,p,fa[2001];
    int find(int x)
    {
        return x==fa[x]?x:fa[x]=find(fa[x]);
    }
    int main()
    {
        int i,j;
        scanf("%d%d%d",&n,&m,&p);
        for(i=1;i<=n;i++)
          fa[i]=i,cin>>s,a[s]=i;
        for(i=1;i<=m;i++)
        {
            cin>>s>>ss;
            int xx=find(a[s]),yy=find(a[ss]);
            if(fa[xx]!=fa[yy])
              fa[xx]=fa[yy];
        }
        for(i=1;i<=p;i++)
        {
            cin>>s>>ss;
            if(find(a[s])==find(a[ss]))
              printf("safe
    ");
            else
              printf("cc cry
    ");
        }
        return 0;
    }
  • 相关阅读:
    检测当前浏览器及版本
    js 实现两个小数的相乘、相除功能
    echarts图表初始大小问题及echarts随窗口变化自适应
    element-ui走马灯如何实现图片自适应 长度和高度 自适应屏幕大小
    vue中淡入淡出示例
    CSS3------box-shadow,即单边阴影效果设置
    webpack4 自学笔记五(tree-shaking)
    webpack4 自学笔记四(style-loader)
    webpack4 自学笔记三(提取公用代码)
    webpack4 自学笔记二(typescript的配置)
  • 原文地址:https://www.cnblogs.com/jyhywh/p/6052636.html
Copyright © 2011-2022 走看看