国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

家庭房產(并查集)

2019-11-08 02:14:27
字體:
來源:轉載
供稿:網友
家庭房產   (25分)

給定每個人的家庭成員和其自己名下的房產,請你統計出每個家庭的人口數、人均房產面積及房產套數。

輸入格式:

輸入第一行給出一個正整數NN(/le 1000≤1000),隨后NN行,每行按下列格式給出一個人的房產:

編號 父 母 k 孩子1 ... 孩子k 房產套數 總面積

其中編號是每個人獨有的一個4位數的編號;分別是該編號對應的這個人的父母的編號(如果已經過世,則顯示-1);k(0/le0≤k/le 5≤5)是該人的子女的個數;孩子i是其子女的編號。

輸出格式:

首先在第一行輸出家庭個數(所有有親屬關系的人都屬于同一個家庭)。隨后按下列格式輸出每個家庭的信息:

家庭成員的最小編號 家庭人口數 人均房產套數 人均房產面積

其中人均值要求保留小數點后3位。家庭信息首先按人均面積降序輸出,若有并列,則按成員編號的升序輸出。

輸入樣例:

106666 5551 5552 1 7777 1 1001234 5678 9012 1 0002 2 3008888 -1 -1 0 1 10002468 0001 0004 1 2222 1 5007777 6666 -1 0 2 3003721 -1 -1 1 2333 2 1509012 -1 -1 3 1236 1235 1234 1 1001235 5678 9012 0 1 502222 1236 2468 2 6661 6662 1 3002333 -1 3721 3 6661 6662 6663 1 100

輸出樣例:

38888 1 1.000 1000.0000001 15 0.600 100.0005551 4 0.750 100.000
#include <iostream>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#include <vector>#include <string>#include <cstring>#include <sstream>using namespace std;int n;int fa[10005];int vis[10005];struct DATA{    int id;    int fid;    int mid;    int k;    int cid[10];    int n;    int s;}d[1005];void UFset(){    for(int i=0;i<=9999;i++)    {        fa[i]=i;    }}int Find(int x){    if(fa[x]==x)    {        return x;    }    else    {        return fa[x]=Find(fa[x]);    }}void Union(int a,int b){    if(a==b) return;    int ia=Find(a);    int ib=Find(b);    if(ia<ib)    {        fa[ib]=ia;    }    else    {        fa[ia]=ib;    }}struct ANS{    int id;    int num;    int n;    int s;}ans[10005];struct RES{    int id;    int num;    double b1;    double b2;}res[10005];int cnt;int cmp(RES a,RES b){    if(a.b2==b.b2)    {        return a.id<b.id;    }    return a.b2>b.b2;}int main(){    UFset();    scanf("%d",&n);    for(int i=0;i<n;i++)    {        scanf("%d%d%d",&d[i].id,&d[i].fid,&d[i].mid);        vis[d[i].id]=1;        if(d[i].fid!=-1)        {            vis[d[i].fid]=1;            Union(d[i].id,d[i].fid);        }        if(d[i].mid!=-1)        {            vis[d[i].mid]=1;            Union(d[i].id,d[i].mid);        }        scanf("%d",&d[i].k);        for(int j=0;j<d[i].k;j++)        {            scanf("%d",&d[i].cid[j]);            if(d[i].cid[j]!=-1)            {                vis[d[i].cid[j]]=1;                Union(d[i].id,d[i].cid[j]);            }        }        scanf("%d%d",&d[i].n,&d[i].s);    }    for(int i=0;i<10000;i++)    {        ans[i].id=-1;    }    for(int i=0;i<n;i++)    {        int ID=Find(d[i].id);        ans[ID].id=ID;        ans[ID].n+=d[i].n;  //統計房產總數    //    ans[ID].num   //人口總數不能統計        ans[ID].s+=d[i].s;    }    for(int i=0;i<10000;i++)  //統計家庭人口總數    {        if(vis[i]==1)        {            ans[Find(i)].num+=1;        }    }    for(int i=0;i<10000;i++)    {        if(ans[i].id>=0)        {            res[cnt].id=ans[i].id;            res[cnt].num=ans[i].num;            res[cnt].b1=ans[i].n*1.0/ans[i].num;            res[cnt].b2=ans[i].s*1.0/ans[i].num;            cnt++;        }    }    sort(res,res+cnt,cmp);    PRintf("%d/n",cnt);    for(int i=0;i<cnt;i++)    {        printf("%04d %d %.3f %.3f/n",res[i].id,res[i].num,res[i].b1,res[i].b2);    }    return 0;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高淳县| 富顺县| 准格尔旗| 海门市| 永昌县| 西安市| 墨江| 天峨县| 鸡东县| 白城市| 南华县| 化德县| 集贤县| 新野县| 阿图什市| 天津市| 芮城县| 彭州市| 航空| 福建省| 乌兰察布市| 祁连县| 桑日县| 札达县| 莆田市| 丹江口市| 友谊县| 郎溪县| 东兴市| 三穗县| 林芝县| 仁布县| 淮阳县| 苍山县| 陇南市| 清新县| 乌兰察布市| 当雄县| 丰台区| 虎林市| 报价|