【日常学习】【并查集+map】codevs2639 约会计划题解

然而我竟然让诸城一中悲剧机房的C++能够编译了···

直接上题目

题目描述 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

只是STL的神器和拖慢速度让P党的孩子表示早弃pas保平安炸掉开O2的评测机= =好吧对于P党,本题那句不超过十一个字母且全部大写提供了一种可行的解决方案:用类似读入优化的乱搞转化成long long数字····然而如果遇到长字符串也只好高精或者转C保平安

上面那一段似乎用黑幕更好啊= =然而貌似CSDN只有划线?

所以只是因为还没有发过专门的并查集文章所以发一个玩玩而已= =今天上午诸城一中NOIP模拟赛简直丧心病狂难道是卢政荣神犇的见面礼?我还是喜欢高天宇神犇豆豆熊一样的萌萌眼睛啊【PIA飞

废话太多了快上代码吧 还是要吐槽一句高天宇神犇错别字狂魔简直和oioi有的一拼

code代码片什么鬼一点变成黑条了(⊙﹏⊙)b

//codevs2639 约会计划 并查集+map
//copyright by ametake
//Though Zhucheng NO.1 High School's equipment is rubbish,just have a try
#include
   
   
    
    
#include
    
    
     
     
#include
     
     
      
      
#include
      
      
       
       
#include
       
        using namespace std; map 
        
          cnt; int n,m,p; string s[5000]; int f[5000]; int find(int x) { return f[x]==x?x:f[x]=find(f[x]); } int uni(int x,int y) { if (f[x]!=x) uni(f[x],y); f[x]=y; } int main() { cin>>n>>m>>p; for (int i=1;i<=n;i++) f[i]=i; for (int i=1;i<=n;i++) { cin>>s[i]; cnt[s[i]]=i; } string a,b; int x,y,xx,yy; for (int i=1;i<=m;i++) { cin>>a>>b; x=cnt[a]; y=cnt[b]; xx=find(x); yy=find(y); if (xx!=yy) uni(x,yy); } for (int i=1;i<=p;i++) { cin>>a>>b; x=cnt[a]; y=cnt[b]; xx=find(x); yy=find(y); if (xx!=yy) cout<<"cc cry\n"; else cout<<"safe\n"; } return 0; } 
        
      
      
     
     
    
    
   
   



——风雨如晦,鸡鸣不已

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值