CodeForces 277A 红娘问题(并查子集)
2024-09-05 01:08:28
题目链接
思路如下
这题可以普通的并查集来做,我们把每个人认识的红娘,放到一个同一个集合里面,然后通过 for循环 遍历出现过的编号,看总共有几个集合,当集合的个数大于1的时候,需要的话费rmb的数量是 集合数 - 1 ; ;其次我们还需要特殊考虑:那些一个 红娘都不认识的人,那么他一定 要花费1 rmb
题解如下
#include<iostream>
#include<map>
using namespace std;
const int Len = 1005;
int ar[Len];
int find(int x)
{
if(ar[x] == x)
return x;
return ar[x] = find(ar[x]);
}
void Union(int x, int y)
{
int fx = find(x);
int fy = find(y);
if(fx != fy)
ar[fx] = fy;
}
int main()
{
map<int,int> mp;
int m,n;
scanf("%d %d",&m,&n);
//初始话集合
for(int i = 1; i <= n; i ++)
ar[i] = i;
int val,first_val;
int ans = 0;
for(int i = 1; i <= m; i ++)
{
int t;
scanf("%d",&t);
if(t == 0)
{
ans ++;
}
for(int j = 1; j <= t; j ++)
{
scanf("%d", &val);
mp[val] ++;
if(j == 1)
first_val = val;
else
Union(val , first_val);
}
}
int tem = 0;
for(auto x:mp)
if(find(x.first) == x.first)
tem ++;
if(tem > 0)
tem --;
printf("%d",ans + tem);
return 0;
}
最新文章
- SqlServer简单数据分页
- c语言实现输入一组数自动从大到小排列
- python 数据处理中各种存储方式里数据类型的转换
- windows下mysql开启远程访问权限
- Qt 串口学习3
- D. Green and Black Tea
- HDU1180+BFS
- [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
- HDU 4810 这道题 是属于什么类型?
- SSDTHook实例--编写稳定的Hook过滤函数
- log4j之mybatis配置
- Python之旅Day6 模块应用
- Scrapy基础(七)————图片的简单下载
- gawk命令详解
- CodeForces - 920C Swap Adjacent Elements
- Java进阶面试题列表
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
- vncserver的安装和使用
- Creating Isomorphic Apps with Node.js, React, and Express
- esp_err_t esp_event_loop_init(system_event_cb_t cb, void *ctx);