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

分析:纯粹的模拟题,按题目要求做即可,一开始一直过不了,后来加了个数组vis表示该人还存活,另外3、4、5测试点里有00000这个人要注意。

 /**
 * Copyright(c)
 * All rights reserved.
 * Author : Mered1th
 * Date : 2019-02-27-13.50.01
 * Description : A1114
 */
 #include<cstdio>
 #include<cstring>
 #include<iostream>
 #include<cmath>
 #include<algorithm>
 #include<string>
 #include<unordered_set>
 #include<map>
 #include<vector>
 #include<set>
 using namespace std;
 ;
 struct Family{
     ; //m是人口数
     ,Avgarea=;
     ,area=;//总套数,总面积
     bool flag=false;
 }family[maxn];

 struct Node{
     int id,f,m,k;
     vector<int> child;
     double Msets,Area;
 }node[maxn];

 int father[maxn];
 int find_Father(int x){
     int a=x;
     while(x!=father[x]){
         x=father[x];
     }
     while(a!=father[a]){
         int z=a;
         a=father[a];
         father[z]=x;
     }
     return x;
 }

 void Union(int a,int b){
     int faA=find_Father(a);
     int faB=find_Father(b);
     if(faA!=faB){
         if(faA<faB){
             father[faB]=faA;
         }
         else if(faA>faB){
             father[faA]=faB;
         }
     }
 }

 bool cmp(Family a,Family b){
     if(a.Avgarea!=b.Avgarea) return a.Avgarea>b.Avgarea;
     else return a.id<b.id;
 }

 bool vis[maxn]={false};

 int main(){
 #ifdef ONLINE_JUDGE
 #else
     freopen("1.txt", "r", stdin);
 #endif
     int n,k,id,child;
     scanf("%d",&n);
     ;i<maxn;i++) father[i]=i;
     ;i<n;i++){
         scanf("%d",&id);
         scanf("%d%d%d",&node[id].f,&node[id].m,&k);
         vis[id]=true;
         node[id].id=id;
         ){
             Union(id,node[id].f);
             vis[node[id].f]=true;
         }
         ){
             Union(id,node[id].m);
             vis[node[id].m]=true;
         }
         ;j<k;j++){
             scanf("%d",&child);
             node[id].child.push_back(child);
             vis[child]=true;
             Union(id,child);
         }
         scanf("%lf%lf",&node[id].Msets,&node[id].Area);
     }
     ;i<maxn;i++){
         int faI=find_Father(node[i].id);
         if(vis[faI]){
             family[faI].id=faI;
             family[faI].area+=node[i].Area;
             family[faI].sets+=node[i].Msets;
             family[faI].flag=true;
         }
     }
     ;
     ;i<maxn;i++){
         if(vis[i]){
             family[find_Father(i)].m++;
         }
         if(family[i].flag==true){
             num++;
         }
     }
     ;i<maxn;i++){
         ){
             family[i].Avgarea=family[i].area/family[i].m;
             family[i].Avgsets=family[i].sets/family[i].m;
         }
     }
     sort(family,family+maxn,cmp);
     cout<<num<<endl;
     ;i<num;i++){
         printf("%04d %d %.3f %.3f\n",family[i].id,family[i].m,family[i].Avgsets,family[i].Avgarea);
     }
     ;
 }

1114 Family Property (25 分)的更多相关文章

  1. 【PAT甲级】1114 Family Property (25分)(并查集)

    题意: 输入一个正整数N(<=10000),接着输入N行每行包括一个人的ID和他双亲的ID以及他的孩子数量和孩子们的ID(四位整数包含前导零),还有他所拥有的房产数量和房产面积.输出一共有多少个 ...

  2. PAT (Advanced Level) 1114. Family Property (25)

    简单DFS. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...

  3. PAT甲题题解-1114. Family Property (25)-(并查集模板题)

    题意:给出每个人的家庭成员信息和自己的房产个数与房产总面积,让你统计出每个家庭的人口数.人均房产个数和人均房产面积.第一行输出家庭个数,随后每行输出家庭成员的最小编号.家庭人口数.人均房产个数.人均房 ...

  4. PAT甲级——1114 Family Property (并查集)

    此文章同步发布在我的CSDN上https://blog.csdn.net/weixin_44385565/article/details/89930332 1114 Family Property ( ...

  5. 【刷题-PAT】A1114 Family Property (25 分)

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

  6. PAT 1114 Family Property[并查集][难]

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

  7. PTA 04-树5 Root of AVL Tree (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/668 5-6 Root of AVL Tree   (25分) An AVL tree ...

  8. PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***

    1066 Root of AVL Tree (25 分)   An AVL tree is a self-balancing binary search tree. In an AVL tree, t ...

  9. PAT甲级:1066 Root of AVL Tree (25分)

    PAT甲级:1066 Root of AVL Tree (25分) 题干 An AVL tree is a self-balancing binary search tree. In an AVL t ...

随机推荐

  1. 【DevExpress v17.2新功能预告】增强ASP.NET GridView的功能

    在下一个主要版本v17.2中,我们将为DevExpress ASP.NET GridView添加一些优秀的新功能.在本文中为大家介绍的所有功能都可用于 GridView的ASP.NET WebForm ...

  2. JVM --- OutOfMemoryError异常

    在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有可能发生OutOfMemoryError(OOM)异常. 1.Java堆溢出 Java堆用于存储对象实例,只要不断地创 ...

  3. Alpha阶段敏捷冲刺---Day6

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 今天的任务标志着我们项目进入收尾阶段,今天将完成大部分程序的功能,例如主界面设计,彻底完成计算模块,服务器随机生成题目等等,这些任 ...

  4. WTForms组件

    WTForms组件 WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 注意: from wtforms import Form 和 from flask_wtf ...

  5. influx+grafana自定义python采集数据和一些坑的总结

    先上网卡数据采集脚本,这个基本上是最大的坑,因为一些数据的类型不正确会导致no datapoint的错误,真是令人抓狂,注意其中几个key的值必须是int或者float类型,如果你不慎写成了strin ...

  6. C高级第一次PTA作业

    作业要求一 附加题目 写程序证明P++等价于(p)++还是等价于*(p++)? 1.设计思路: (1).题目算法描述 第一步:定义变量p并赋初值 第二步:分三次计算每次分别输出 p++,(p)++,* ...

  7. 游标 cursor

    * mongo shell下支持JS代码,可以通过JS获取游标,进而获取数据操作结果. var cursor = db.class1.find() cursor.next() 获取下一条结果 curs ...

  8. jsp之response方法

    response简介 response对象:对客户端的请求作出回应,将Web服务器处理后的结果发回客户端. response对象:属于javax.servlet.HttpServletResponse ...

  9. hdu2090-2097

    hdu2090 模拟 #include<stdio.h> int main(){ ]; ,a1,a2; ; while(scanf("%s%lf%lf",b,& ...

  10. cf 557D 二分图黑白染色

    题意:给出一个 n 点 m 边的图,问最少加多少边使其能够存在奇环,加最少边的情况数有多少种 奇环和偶环其实就是二分图的性质:二分图不存在奇环,所以只要判断这张图是否是二分图就行了: 如果本身就不是二 ...