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

    题目描述

    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’(T_T)。

    【数据范围】

    0<m<=2008

    0<p<=2008

    输入格式第一行为n,m,p。n为mm的数量,cc知道m对朋友关系,有p次约会。

    2到n+1 行,每行一个字符串,为第i个mm的名字。{字符串长度<=11,且全大写}

    以下m行,每行两个字符串,用空格隔开 ,为有朋友关系的两个mm的名字。

    以下p行,每行为两个字符串,用空格隔开,为这p次约会中两个mm的名字。

    {保证数据不会出现没有出现过的名字}

    输出格式输出P行表示第i次约会的情况,输出‘safe’或者‘cc cry’
    样例输入

    3 1 1
    AAA
    BBB
    CCC
    AAA CCC
    AAA BBB

    样例输出

    cc cry

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<map>
    using namespace std;
    const int maxn = 3050;
    int n,m,p;
    int f[maxn];
    string s;
    map<string,int> tran;
    int findf(int x){
        return x == f[x] ? x : f[x] = findf(f[x]);
    }
    int main(){
        ios::sync_with_stdio(false);
        cin>>n>>m>>p;
        for(int i = 1;i <= n;i++){
            cin>>s;
            tran[s] = i;
            f[i] = i;
        }
        string tx,ty;
        int x,y,fx,fy;
        for(int i = 1;i <= m;i++){
            cin>>tx>>ty;
            x = tran[tx];
            y = tran[ty];
            fx = findf(x);
            fy = findf(y);
            if(fx == fy) continue;
            f[fx] = fy;
        }
        for(int i = 1;i <= p;i++){
            cin>>tx>>ty;
            x = tran[tx];
            y = tran[ty];
            fx = findf(x);
            fy = findf(y);
            if(fx == fy) cout<<"safe"<<endl;
            else cout<<"cc cry"<<endl;
        }
        return 0;
    }
    
    #include<iostream>
    using namespace std;
    string mm[2009];
    int n,m,p;
    int father[2009];
    int get(string a)
    {
        for(int i=1;i<=n;i++)
        {
                if(mm[i]==a)return i;
                }
    }
    int find(int x)
    {
        if(x!=father[x])father[x]=find(father[x]);
        return father[x];
    }
    int un(int x,int y)
    {
        father[x]=y;
    }
    int main()
    {
        string a,b;
        cin>>n>>m>>p;
        for(int i=1;i<=n;i++)
        {
           cin>>mm[i];
           father[i]=i;
        }
        for(int i=1;i<=m;i++)
        {
                cin>>a>>b;
                un(find(get(a)),find(get(b)));
                }
        for(int i=1;i<=p;i++)
        {
                cin>>a>>b;
                if(find(get(a))==find(get(b)))cout<<"safe"<<endl;
                else cout<<"cc cry"<<endl;
                }
        //system("pause");
        return 0;
    }
  • 相关阅读:
    用开源项目CropImage实现图片的裁剪(不推荐)
    设定当前视图中所有控件字体的方法
    用开源项目cropper实现对图片中任意部分进行裁剪
    从源码角度一步一步来修改PreferenceActivity界面
    自定义PreferenceActivity和PreferenceFragment的样式
    Eclipse 在线汉化的和修改字体大小、颜色的方法
    用level-list让同一个ImageView根据条件来显示不同的内容
    ClipDrawable属性介绍
    自己用图片做的可旋转、不确定进度的ProgressBar
    Android工具类 DateUtil,可以用它方便的进行日期的操作
  • 原文地址:https://www.cnblogs.com/hyfer/p/5878057.html
Copyright © 2011-2022 走看看