7-56 家庭房产 (25 分)

给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。

输入格式:

输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:

编号 父 母 k 孩子1 ... 孩子k 房产套数 总面积

其中编号是每个人独有的一个4位数的编号;分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。

输出格式:

首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:

家庭成员的最小编号 家庭人口数 人均房产套数 人均房产面积

其中人均值要求保留小数点后3位。家庭信息首先按人均面积降序输出,若有并列,则按成员编号的升序输出。

输入样例:

10
6666 5551 5552 1 7777 1 100
1234 5678 9012 1 0002 2 300
8888 -1 -1 0 1 1000
2468 0001 0004 1 2222 1 500
7777 6666 -1 0 2 300
3721 -1 -1 1 2333 2 150
9012 -1 -1 3 1236 1235 1234 1 100
1235 5678 9012 0 1 50
2222 1236 2468 2 6661 6662 1 300
2333 -1 3721 3 6661 6662 6663 1 100

结尾无空行

输出样例:

3
8888 1 1.000 1000.000
0001 15 0.600 100.000
5551 4 0.750 100.000

结尾无空行

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=10010;
struct node{int hnum,area;node(){hnum=area=0;}
};
struct ans{int id,num;double avehnum,avearea;bool operator<(const ans &b)const{//家庭信息首先安人均面积降序输出,若有并列,则按成员编号的升序输出if(b.num*avearea==num*b.avearea)return id<b.id;else return b.num*avearea>num*b.avearea;}
};
int p[N];
node a[N];
ans arr[N];
bool vis[N],vv[N];int find(int x){if(x!=p[x])p[x]=find(p[x]);return p[x];
}
void add(int x,int y){x=find(x);y=find(y);p[x]=y;
}
void init(){memset(vis,0,sizeof vis);memset(vv,0,sizeof vv);for(int i=0;i<N;i++)p[i]=i;
}
int main(){int n,k,zd,fd,md,cd;cin>>n;init();for(int i=0;i<n;i++){cin>>zd>>fd>>md;vis[zd]=1;if(fd!=-1)add(zd,fd),vis[fd]=1;if(md!=-1)add(zd,md),vis[md]=1;cin>>k;for(int j=0;j<k;j++){cin>>cd;add(zd,cd),vis[cd]=1;}cin>>a[zd].hnum>>a[zd].area;}int top=0;for(int i=0;i<N;i++)//求家庭信息{if(vis[i]){int x=find(i);if(vv[x]){for(int j=0;j<top;j++){if(find(arr[j].id)==x){arr[j].num++;arr[j].avearea+=a[i].area;arr[j].avehnum+=a[i].hnum;break;}}}else{vv[x]=1;arr[top].id=i;arr[top].num=1;arr[top].avearea=arr[top].avehnum=0;arr[top].avearea+=a[i].area;arr[top++].avehnum+=a[i].hnum;}}}sort(arr,arr+top);printf("%d\n",top);for(int i=0;i<top;i++)printf("%.04d %d %.3lf %.3lf\n",arr[i].id,arr[i].num, 1.0*arr[i].avehnum/arr[i].num, 1.0*arr[i].avearea/arr[i].num);return 0;
}

7-56 家庭房产 (25 分)相关推荐

  1. C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

    L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按 ...

  2. 【CCCC】L2-007 家庭房产 (25分),并查集,结构统计

    problem L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000), ...

  3. 7-11 家庭房产(25 分) 【并查集】

    7-11 家庭房产(25 分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列 ...

  4. C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)

    1114 Family Property (25分) This time, you are supposed to help us collect the data for family-owned ...

  5. L2-007. 家庭房产

    L2-007. 家庭房产 题目链接:https://www.patest.cn/contests/gplt/L2-007 并查集 初学,看这题的时候完全没有什么好的想法,参考了@yinzm的blog用 ...

  6. PTA 家庭房产 (图论,暴搜)

    PTA 家庭房产 (图论,暴搜) 题目详情: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N ...

  7. 1121 Damn Single (25 分)

    1121 Damn Single (25 分) "Damn Single (单身狗)" is the Chinese nickname for someone who is bei ...

  8. [PTA]L2-001 紧急救援 (25 分)

    L2-001 紧急救援 (25 分) Description 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每 ...

  9. 7-1 城市间紧急救援 (25 分)(最短路径:斯特拉算法)

    7-1 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...

最新文章

  1. 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc
  2. 值得收藏!脑科学、脑机接口领域白皮书、研究报告汇总
  3. ubuntu16.04下配置caffe无GPU
  4. 理解Android进程创建流程
  5. Stateless 3.0——.NET Core上的状态机库
  6. win10改计算机用户名,win10如何改成自己想要的文件夹用户名?
  7. 关系代数操作应用、关系元组运算应用
  8. 目录-换热器工艺设计
  9. 系统试运行报告是谁写的_“项目总结报告”如何写?5个方向16个关键要素:总结很全面...
  10. java nio为什么是非阻塞_Java nio都是非阻塞IO么?并非如此
  11. win7 开WiFi共享
  12. 2019美国大学计算机本科排名,美国大学计算机排名2019最新排名
  13. VPS常用网络测试工具
  14. python3.5项目升级3.8问题汇总
  15. JavaScript+css实现的喜庆活动邀请函多页面html源码
  16. 豆瓣8.0分,尺度堪比色戒,一部让人绝望的电影
  17. 【opencv】基本阈值操作
  18. 算法笔记--素数筛(朴素筛,埃式筛,欧拉筛)
  19. ADSP重点习题第二章-第三章(原版书第四章)
  20. dup/dup2的用法及详解(转)

热门文章

  1. 2 snippets vue 修改配置_VsCode从零开始配置一个属于自己的Vue开发环境
  2. 数据库SQL命令经典面试题65道
  3. MySQL优化常见Extra分析——慢查询优化
  4. 【模板】高精度 [高精度]
  5. C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)
  6. 2045 数学:排列组合
  7. OneNote 2013 快捷键
  8. 关于Web面试的基础知识点--Html+Css(四)
  9. 谷歌身份认证 Python实现
  10. ORA-12519: TNS:no appropriate service handler found 解决方法