L2 007 家庭房產

2022-05-01 13:33:09 字數 1674 閱讀 1665

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

輸入格式:

輸入第一行給出乙個正整數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

思路:一看題目資料這麼長被嚇到了,暴力並查集ac

#include#include

#include

#include

using

namespace

std;

int a[10005], tao[10005], area[10005], peo[10005], flag[10005

];int find(int

p)

returnp;}

void union(int q, int

p)

else

}struct

node

};int

main()

int n; cin >>n;

for (int i = 0; i < n; i++)

int chil; cin >>chil;

for (int j = 0; j < chil; j++)

int temp =find(me);

int a, b; cin >> a >>b;

tao[temp] +=a;

area[temp] +=b;

}priority_queue

que;

for (int i = 0; i < 10005; i++)

}cout

<< que.size()

return0;

}

L2 007 家庭房產c 版本答案

給定每個人的家庭成員和其自己名下的房產,請你統計出每個家庭的人口數 人均房產面積及房產套數。輸入格式 輸入第一行給出乙個正整數n 1000 隨後n行,每行按下列格式給出乙個人的房產 編號 父 母 k 孩子1 孩子k 房產套數 總面積 其中編號是每個人獨有的乙個4位數的編號 父和母分別是該編號對應的這...

L2 007 家庭房產(並查集)

給定每個人的家庭成員和其自己名下的房產,請你統計出每個家庭的人口數 人均房產面積及房產套數。輸入第一行給出乙個正整數n 1000 隨後n行,每行按下列格式給出乙個人的房產 編號 父 母 k 孩子1 孩子k 房產套數 總面積其中編號是每個人獨有的乙個4位數的編號 父和母分別是該編號對應的這個人的父母的...

家庭房產L2 007

較為麻煩的並查集 主要是我的模板是錯的檢查了好久。先是輸入 把每個家庭連在一起 輸出的家庭編號為該家庭所有編號的最小值 在並查集裡面完成 第一次 0 n 1遍歷儲存好 家庭編號 和房子面積和數量 第二次0 n遍歷 遍歷家庭人數 第三遍 處理人均面積和家庭數量和人均數量 includeusing na...