GPLT L2-007 家庭房产 (并查集)
题意:
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。
思路:
输入和输出各构造一个结构体,利用并查集归并输入,枚举编号进行输出。
#include <bits/stdc++.h>
using namespace std; const int M=11000; struct DATA{
int id,fid,mid,num,area;
int cid[10];
}data[M]; struct NODE{
int id,people;
double num,area;
bool flag=false;
}ans[M]; int father[M];
bool visit[M]; int Find(int x){
while(x!=father[x]) x=father[x];
return x;
} void Union(int A,int B){
int faA=Find(A);
int faB=Find(B);
if(faA>faB) father[faA]=faB;
if(faB>faA) father[faB]=faA;
} bool cmp(NODE a,NODE b){
if(a.area==b.area) return a.id<b.id;
else return a.area>b.area;
} int main()
{
int n,k,cnt=0;cin>>n;
for(int i=0;i<M;i++) father[i]=i;
for(int i=0;i<n;i++){
cin>>data[i].id>>data[i].fid>>data[i].mid>>k;
visit[data[i].id]=true;
if(data[i].fid!=-1){
Union(data[i].fid,data[i].id);
visit[data[i].fid]=true;
}
if(data[i].mid!=-1){
Union(data[i].mid,data[i].id);
visit[data[i].mid]=true;
}
for(int j=0;j<k;j++){
cin>>data[i].cid[j];
Union(data[i].id,data[i].cid[j]);
visit[data[i].cid[j]]=true;
}
cin>>data[i].num>>data[i].area;
}
for(int i=0;i<n;i++){
int id=Find(data[i].id);
ans[id].id=id;
ans[id].num+=data[i].num;
ans[id].area+=data[i].area;
ans[id].flag=true;
}
for(int i=0;i<M;i++){
if(visit[i]) ++ans[Find(i)].people;
if(ans[i].flag) ++cnt;
}
for(int i=0;i<M;i++){
if(ans[i].flag){
ans[i].num=1.0*ans[i].num/ans[i].people;
ans[i].area=1.0*ans[i].area/ans[i].people;
}
}
sort(ans,ans+M,cmp);
printf("%d\n",cnt);
for(int i=0;i<cnt;i++)
printf("%04d %d %.3f %.3f\n",
ans[i].id,ans[i].people,ans[i].num,ans[i].area);
return 0;
}
GPLT L2-007 家庭房产 (并查集)的更多相关文章
- PATL2-007. 家庭房产-并查集
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- L2-007. 家庭房产(并查集)
#include <cstdio> #include <set> #include <vector> #include <algorithm> usin ...
- TOJ3660家庭关系(并查集+hash+图的连通性)
家庭关系 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 38 测试通过: 9 描述 给定若干家庭成员之间的关系 ...
- GPLT L2-010 排座位 (并查集)
Tips: 数据范围较小时可把二维数组当做map<pair<int,int>,int>使用. #include <bits/stdc++.h> using name ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- 天梯赛 L2-007. (并查集) 家庭房产
题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...
- 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 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
随机推荐
- Viser报错:dodge is not support linear attribute, please use category attribute!
遇到这样的问题是因为x轴数据不能为为连续性的日期(日期格式为:YYYY-MM-DD),需要设置为分类属性(cat),有一些可能设置为timeCat,看具体情况 scale 参数支持以下类型 • ide ...
- Docker haproxy应用构建 (五)
编写dockerfile from centos-base:v1 MAINTAINER 57674891@qq.com RUN mkdir -p /data/{soft,src,logs,script ...
- MySQL 使用MD5对数据进行加密
数据库MD5加密 -- ================ 测试 MD5 加密 ============== CREATE TABLE `testmd5`( id INT(11) NOT NULL AU ...
- 【Git】3、创建Git版本库、配置Git仓库用户邮箱信息
初识Git 文章目录 初识Git 1.创建Git版本库 认识.git 2.基础配置 2.1.查看配置信息 2.2.配置昵称邮箱信息 2.3.修改配置信息 1.通过命令行 2.通过修改配置文件. 修改全 ...
- 使用SimpleUpdater实现现有程序升级功能
项目:https://github.com/iccfish/FSLib.App.SimpleUpdater C/S程式一般需要部署在多台机器上,如果程式有变动,需要一台一台重新安装,相当麻烦,如果我们 ...
- 误删除SAP ECC中的profile文件
环境:ECC6.0 EHP4 FOR ORACLE ON WINDWS X64下 今天在RZ10配置系统参数文件的时候,不小心错删除了instance profile文件,这下惨了,这是操作系统层级 ...
- Poj-P2533题解【动态规划】
本文为原创,转载请注明:http://www.cnblogs.com/kylewilson/ 题目出处: http://poj.org/problem?id=2533 题目描述: 如果ai1 < ...
- HTML基础复习2
6.表格 6.1建立表格: 表格由<table></table>标签来定义 每行由<tr></tr>来定义,每行被分割为若干单元格,由<td> ...
- 手机QQ空间自动点赞登录
学以致用~使用 Appium 模拟人类操控手机行为 V2.0在手机上运行,目前实现以下功能: 1.小黑屋模式,一分钟内给好友发100条消息然后进了好友的小黑屋 2.定时发消息提醒对象多喝热水~ 3.对 ...
- Flask中的g到底是个什么鬼?
g到底是个什么鬼? 在一次请求请求的周期,可以在g中设置值,在本次的请求周期中都可以读取或复制. 相当于是一次请求周期的全局变量. from flask import Flask,g app = Fl ...