点击就送屠龙宝刀

题目描述 Description

有这么一种说法:认识6个人,你就认识全世界的人。

Aiden现在有一张关系图,上面记载了N个人之间相互认识的情况。Aiden想知道,他能否只认识6个人就能间接认识这N个人呢?
输入描述 Input Description

第一行,两个数N,M,表示有N个人,M对认识关系。

接下来的M行,每行两个数ai,bi,表示ai与bi相互认识。

不保证认识关系不出现重复,保证ai≠bi。

N个人的编号为1…N。
输出描述 Output Description

若只认识6个人就能间接认识这N个人,则输出“^_^”。

若不行,则第一行输出“T_T”,第二行输出认识6个人最多能间接认识的人的个数。

输出不包括引号。
样例输入 Sample Input

6 7

1 2

1 3

2 4

3 5

4 6

5 6

3 2
样例输出 Sample Output

^_^
数据范围及提示 Data Size & Hint

对于30%的数据,保证0<n≤1000。

对于50%的数据,保证0<n≤5000。

对于100%的数据,保证0<n≤10000,m≤10*n。

这个题怎么说呢,槽点满满的。。首先肯定是用并查集来实现,这个肯定可以看出来。然后可以各种脑洞实现啦23333.刚开始我想的是添加一个use数组记录是否找到过然后停止的时候把这个数扔到一个vector里面排序然后取前6个(如果足够多的话)。然而莫名RE于是想到了另外一个脑洞方式
我们可以在用并查集寻找的时候记录满足条件的编号,然后利用集合合并的方式来计算前6(足够大的情况下)组的和,然后根据条件判断输出就可以了。
总的来说这题难度不大甚至可以说是代码能力练习题23333.

#include<iostream>
#include<cstdio>
#include<algorithm>using namespace std;
int father[10010]={0};
int sum[10010]={0};int find(int x)
{if (father[x]==x)return x;else{father[x]=find(father[x]);return father[x];}
}//并查集路径压缩findvoid merge(int x,int y){int f1=find(x);int f2=find(y);if (f1!=f2){father[f1]=f2;sum[f2]+=sum[f1];//记录以这个集合为代表元素的集合的元素个数}}//并查集合并int main(){int i,j,k,x,y,z,n,m;scanf("%d%d",&n,&m);for (i=1;i<=n;i++){father[i]=i;sum[i]=1;}//并查集初始化,加元素个数的数组初始化for (i=1;i<=m;i++){scanf("%d%d",&x,&y);merge(x,y);}int ans=0;int bh[10010]={0};//记录满足条件的集合的编号k=1;for (i=1;i<=n;i++){if (find(i)==i){ans++;bh[k]=i;k++;}}//找有几个集合k为保存集合数的下标,ans为集合数for (i=1;i<=k;i++){bh[i]=sum[bh[i]];}//把集合数变成集合里元素数int ans1=0;sort(bh+1,bh+k+1);for (i=k;i>=k-5;i--)ans1+=bh[i];//前6大的集合的元素总数,不满足认识6 人就认识世界的时候输出if (ans<=6)printf("^_^");else{printf("T_T");printf("\n%d",ans1);}return 0;
}

Codevs 6个朋友相关推荐

  1. codevs 2832 6个朋友 并查集 解题报告

    题目描述 Description 有这么一种说法:认识6个人,你就认识全世界的人. Aiden现在有一张关系图,上面记载了N个人之间相互认识的情况.Aiden想知道,他能否只认识6个人就能间接认识这N ...

  2. 【BZOJ2744】【codevs2366】朋友圈,二分图最大匹配

    传送门1 传送门2 思路: 思维不错的一道题. 题意就是给出限制条件,在构建出的图上找最大团,如果是一般图找最大团是NPC问题,所以要转换思路,一看数据范围很像网络流,但是一开始我并没有想到怎么做,也 ...

  3. CODEVS——T 1005 生日礼物

    http://codevs.cn/problem/1005/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 9月12日 ...

  4. codevs 1506 传话 题解

    Codevs 1506传话 题解 1506 传话--这个题目的解法很多,你能想到几种? 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Descr ...

  5. 用男女朋友关系解释计算机常用概念

    运维方面 很多同学对热备,冷备,云备了解不深,我科普一下 IT 行业各种备份术语.以后别闹笑话了. 假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人.你随时可以 ...

  6. 想搞自动识别系统的应用程序,希望能跟有志于此的朋友交流

    鉴于对东莞的实际情况的了解,目前WEB编程暂时冷了,可能缘于整体水平次,本地需求简单,本地原有公司技术积累不够,本地一些有背景有钱的借着东莞"升级"或"转型"挂 ...

  7. [ CodeVS冲杯之路 ] P1116

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1116/ 数据很小,DFS可A,每层枚举颜色,判断相邻的点是否有重复的颜色,记得回溯时把颜色染回0,即无颜色 这里我使用 ...

  8. 提醒参加北京Tech.Ed2007会议并在九华山庄上网的朋友注意!

    今年的会议内容很是精彩,但是所住的九华山庄的网络却出现了一些问题.这在开心就好的博客里也有所提到,我想应该问题类似吧. 表现是网络速度非常慢,网页经常需要刷新才能打开. 首先给大家看几个截图: 我想做 ...

  9. 微擎 jssdk php文件,微擎register_jssdk分享到朋友功能无法使用的问题及解决办法

    近期在做微信公众号应用开发时发现微擎register_jssdk分享到朋友功能无法使用,当前使用的微擎版本是1.8.2,通过查阅微信公众号官方的相关文档后发现jssdk的分享功能有进行调整. 引用官方 ...

最新文章

  1. mysql本地服务器密码,mysql如何修改密码
  2. 点云数据的类型主要分为_点云学习在自动驾驶中的研究概述
  3. html事件机制,浅析JavaScript中的事件机制_基础知识
  4. sql server解析xml属性为表格_Mybatis中SqlSource解析流程详解
  5. 英语语法---介词详解
  6. python将csv一行保存一个txt_Python读写文件(csv、txt、excel)
  7. 量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...
  8. 进击的二维码 | ArcBlock 课堂预告
  9. Diskpart命令安装系统小结
  10. LeetCode - Remove Duplicates from Sorted List
  11. win7电脑屏幕亮度怎么调节
  12. Tews Technologies TPMC871 PCMCIA PMC 接口模块
  13. 美国生活——考取实习驾照(Permit)
  14. android 平板分辨率是多少合适,为什么越来越多的平板放弃16:9的屏幕比例?
  15. python爬虫之爬取网易云音乐的歌曲图片和歌词
  16. MT6765 datasheet手册,MT6765参考设计,MT6765芯片资料
  17. 采用uni-app开发的多端圈子社区论坛系统
  18. 雨听 | 英语学习笔记(八)~作文范文:公务员考试的热潮
  19. word样式和多级列表设置技巧(二)
  20. oRTP库——使用详解

热门文章

  1. matlab采样率什么意思,求教。音频文件的位数,码率,采样率都代表什么意思啊?...
  2. JS获取当前网页大小以及屏幕分辨率等
  3. Pandas中的轴向堆叠数据—concat()方法
  4. 好记性不如烂笔头(一)——局域网可以Ping通,但Socket无法连接
  5. Python爬虫学习 7 —— 正则表达式
  6. 【1】GAN在医学图像上的生成,今如何?
  7. ThreadPoolTaskExecutor 线程池的使用
  8. 基于socket的FreeD数据收发
  9. RuoYi-Vue,执行npm run dev,报错“RuoYi-Vue\ruoyi-ui\node_modules\eslint\lib\cli-engine\cli-engine.js:421”
  10. 【学习笔记】到底是谁先开枪?——网络游戏同步机制初探