L2-007. 家庭房产(并查集)
#include <cstdio>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
const int N=1e4+;
const int inf=1e8;
int n;
int f[N];
set<int>st,tt;
set<int>::iterator it;
struct node{
int ns=,S=;
}peo[N];
struct edge{
int Min=inf,num=;
double avgHouse=,avgS=;
bool operator < (const edge x)const &{
if(x.avgS==avgS){
return x.Min>Min;
}
return x.avgS<avgS;
}
}res[N];
vector<edge>sus;
void init(){
for (int i=; i<N; i++) {
f[i]=i;
}
}
int query(int x){
int r=x;
while (f[x]!=x) {
x=f[x];
}
f[r]=x;
return x;
}
void join(int x,int y){
int fx=query(x);
int fy=query(y);
if(fx!=fy){
f[fx]=fy;
}
}
void checkjoin(int x,int d,int m){
st.insert(x);
if(d!=- && m!=-){
st.insert(d);
st.insert(m);
join(d, m);
join(x, d);
}else if(d!=-){
st.insert(d);
join(x, d);
}else if(m!=-){
st.insert(m);
join(x, m);
}
}
int main(){
int x,d,m,k,c;
init();
scanf("%d",&n);
for (int i=; i<n; i++) {
scanf("%d%d%d",&x,&d,&m);
checkjoin(x, d, m);
scanf("%d",&k);
for (int j=; j<k; j++) {
scanf("%d",&c);
st.insert(c);
join(c, x);
}
scanf("%d%d",&peo[x].ns,&peo[x].S);
}
for (it=st.begin(); it!=st.end(); it++) {
x=*it;
int fx=query(x);
if (x==fx) tt.insert(x);
res[fx].Min=min(res[fx].Min, x);
res[fx].num++;
res[fx].avgHouse+=peo[x].ns;
res[fx].avgS+=peo[x].S;
}
for (it=tt.begin(); it!=tt.end(); it++) {
x=*it;
res[x].avgHouse/=res[x].num;
res[x].avgS/=res[x].num;
sus.push_back(res[x]);
}
sort(sus.begin(), sus.end());
printf("%d\n",(int)sus.size());
for (int i=; i<sus.size(); i++) {
printf("%04d %d %.3lf %.3lf\n",sus[i].Min,sus[i].num,sus[i].avgHouse,sus[i].avgS);
}
return ;
}
L2-007. 家庭房产(并查集)的更多相关文章
- PATL2-007. 家庭房产-并查集
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- TOJ3660家庭关系(并查集+hash+图的连通性)
家庭关系 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 38 测试通过: 9 描述 给定若干家庭成员之间的关系 ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- 天梯赛 L2-007. (并查集) 家庭房产
题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...
- GPLT L2-007 家庭房产 (并查集)
题意: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 思路: 输入和输出各构造一个结构体,利用并查集归并输入,枚举编号进行输出. #include &l ...
- L2-007. 家庭房产(并查集)*
L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...
- L2-007 家庭房产 (25分) 并查集
题目链接 题解:并查集把一个家的并在一起,特殊的一点是编号大的并到小的去.这个题有个坑编号可能为0000,会错数据3和5. 1 #include<bits/stdc++.h> 2 usin ...
- 团体程序设计天梯赛-练习集L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- 【PAT-并查集-水题】L2-007-家庭房产
L2-007. 家庭房产 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下 ...
随机推荐
- 强大的时间处理库 moment
中文文档: http://momentjs.cn/docs/ 常用方法 1.当前时间对象 moment () / 指定时间对象 moment("2019-09-19 08:00:0 ...
- (五)Linux内存管理zone_sizes_init
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- Postman工具使用-接口测试(实战一)
写在前面,本文首发[简书]https://www.jianshu.com/p/c188624c3580 作为一名测试人员,要去思考一下,如何能按需完成任务,又能轻松解决问题,这就很重要了!!! 凡事皆 ...
- jenkins插件之Publish Over SSH的使用
1,安装 在插件管理选项搜索Publish Over SSH,然后点击安装即可完成 2,安装完成之后,就可以在jenkins的配置系统中找到Publish Over SSH 配置完服务器之后,然后在项 ...
- Windows认证 | Windows本地认证
Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与SAM文件中的密码进行对比,如果相同,则认证成功. SAM文件是位于%SystemRoot ...
- 品Spring:SpringBoot和Spring到底有没有本质的不同?
现在的Spring相关开发都是基于SpringBoot的. 最后在打包时可以把所有依赖的jar包都打进去,构成一个独立的可执行的jar包.如下图13: 使用java -jar命令就可以运行这个独立的j ...
- Python人工智能第一篇:语音合成和语音识别
Python人工智能第一篇:语音合成和语音识别 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度, ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...
- java调用python的几种用法(看这篇就够了)
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- .Net Core 商城微服务项目系列(六):搭建自己的Nuget包服务器
当我们使用微服务架构之后,紧接而来的问题便是服务之间的程序集引用问题,可能没接触过的同学不太理解这句话,都已经微服务化了为什么还要互相引用程序集,当然可以不引用.但是我们会有这样一种情况,我们的每个接 ...