1114 Family Property (25 分)

This time, you are supposed to help us collect the data for family-owned property. Given each person's family members, and the estate(房产)info under his/her own name, we need to know the size of each family, and the average area and number of sets of their real estate.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤1000). Then N lines follow, each gives the infomation of a person who owns estate in the format:

ID Father Mother k Child​1​​⋯Child​k​​ M​estate​​ Area

where ID is a unique 4-digit identification number for each person; Father and Mother are the ID's of this person's parents (if a parent has passed away, -1 will be given instead); k (0≤k≤5) is the number of children of this person; Child​i​​'s are the ID's of his/her children; M​estate​​ is the total number of sets of the real estate under his/her name; and Area is the total area of his/her estate.

Output Specification:

For each case, first print in a line the number of families (all the people that are related directly or indirectly are considered in the same family). Then output the family info in the format:

ID M AVG​sets​​ AVG​area​​

where ID is the smallest ID in the family; M is the total number of family members; AVG​sets​​ is the average number of sets of their real estate; and AVG​area​​ is the average area. The average numbers must be accurate up to 3 decimal places. The families must be given in descending order of their average areas, and in ascending order of the ID's if there is a tie.

Sample Input:

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

Sample Output:

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

输出就是  每个集合中id最小的, 总共多少套房子, 平均每人的房子数量和平均每人的房子面积,

先按照平均每人的房子面积从大到小输出 如果相等的话 那么就按照id从小到大输出

思路:并查集的题 ,这题水 就是处理有一点点烦

代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int upset,squ,cnt;node(){cnt = 1;upset = 0;squ = 0;}
}s[10005];
struct GG{double cnt,upset,squ;int id;
};
int pre[10005];
bool flag[10005]; //刚开始不都是false  如果有出现就true
int find(int x){if( x == pre[x])return x;return pre[x] = find(pre[x]);
}
void merge(int x, int y){int fx = find(x);int fy = find(y);if(fx > fy)pre[fx] = fy;else if(fx < fy)pre[fy] = fx; return;
}
bool cmp(GG a, GG b){if(a.squ != b.squ)return a.squ > b.squ;else return a.id < b.id;
}
int main(){int n;scanf("%d", &n);for(int i = 1; i <= 10000; i ++)pre[i] = i;int me, fa, mo, cnt, child;for(int i = 1; i <= n; i ++){scanf("%d %d %d",&me,&fa,&mo);flag[me] = true; if(fa != -1){merge(me, fa);flag[fa] = true;}   if(mo != -1){merge(me, mo);flag[mo] = true;}  scanf("%d",&cnt);for(int j = 1; j <= cnt; j ++ ){scanf("%d",&child); merge(child, me);flag[child] = true;}  scanf("%d %d",&s[me].upset, &s[me].squ);}set<int>st;for(int i = 10000; i >= 0; i--)  //这边wa了第四个测试点因为0---10000  我写成1----10000{if(flag[i] == true){int x = find(i);//找到它的祖先st.insert(x);if(x != i){s[x].cnt += s[i].cnt;s[x].squ += s[i].squ;s[x].upset += s[i].upset; }}}set<int>::iterator it = st.begin();vector<GG>vec;while(it!=st.end()){GG gg;gg.id = *it;gg.cnt = s[*it].cnt;gg.squ =s[*it].squ * 1.0 / s[*it].cnt * 1.0;gg.upset = s[*it].upset * 1.0 / s[*it].cnt * 1.0;vec.push_back(gg);it++;}sort(vec.begin(),vec.end(),cmp);printf("%d\n",vec.size());for(int i = 0 ; i < vec.size(); i++)printf("%04d %.0lf %.3lf %.3lf\n",vec[i].id, vec[i].cnt,vec[i].upset, vec[i].squ);return 0;
} 

1114 Family Property (25 分)相关推荐

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

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

  2. 1114 Family Property (25分) (并查集) 复杂题 经典并查集

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  3. 1114 Family Property (25 分)【难度: 中/ 知识点: 并查集】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805356599820288 挺好的一个并查集,先读入然后再处理.注意:在 ...

  4. 1114. Family Property (25)-PAT甲级真题(并查集)

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  5. 1114. Family Property (25)

    //给定 id id的父亲 id的母亲(-1表示过世) k id的k个孩子 房产的数量 房产的面积 //求每个家庭(用最小的id存储)房产的总数 平均房产数量和面积(平均保留三位) //排序:平均面积 ...

  6. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...

  7. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  8. PTA 03-树1 树的同构 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构   (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...

  9. 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)

    1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the order ...

  10. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)

    1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...

最新文章

  1. SAP--DEBUG--外部断点的设置
  2. Python入门教程以及资料免费下载
  3. Building Paragon in Unreal Engine 4 - GDC 2016
  4. 如何监控Android电视桌面,androidTV 电视桌面的效果
  5. AAA验证和ciscorescue v4.2 验证服务器的搭建(telnet方式和级别的设置)
  6. F#学习:类型的定义和使用语法
  7. php apache 多进程,php多进程 防止出现僵尸进程 如何 使 apache 成为 僵尸进程
  8. iOS 解决报错 dyld: Library not loaded: @rpath/xxx.framework Reason: image not found
  9. Servlet总结1---基础东西的介绍
  10. 云豹直播源码v8.2
  11. 项目管理中如何应对用户频繁的需求变更?
  12. 书摘—跟鬼谷子学处世 跟菜根谭学修身
  13. 关于diskpart的命令问题记录
  14. 【BLE】蓝牙数据速率
  15. wkhtmltopdf 中文参数详解
  16. FPGA学习笔记_ROM核调用与调试
  17. c3p0连接池拿不到连接导致系统崩溃的问题解决
  18. OpenFOAM量纲及常用物理量的表达形式
  19. 【OCR系列之一】字符识别技术总览
  20. matlab振荡环节的频率特性,自动控制原理_典型环节的频率特性教材教学课件.ppt...

热门文章

  1. 【内购篇】5 分钟教你成为会赚钱的独立开发者
  2. 微信公众号教程(8)用微信开发模式做欢迎词
  3. 主从不同步故障案例一
  4. 【云和恩墨】Oracle初学者入门指南-什么是 Metalink 或 MOS ?
  5. Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式
  6. 运维自动化之zabbix(添加Graph screen)(3)
  7. 《WCF技术内幕》翻译35:第2部分_第6章_通道:通道功能
  8. 如何在VM ware虚拟环境下建立纯软双机热备
  9. redis 经典36问
  10. java指定一个具体日期