首页 > 代码库 > rqnoj378 约会计划
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;}
rqnoj378 约会计划
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。