题目描述:
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数
AC代码:
#include <queue>
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 1e5+55;
int pre[N],vis[N],tig[N];
struct node
{
int pnum,fnum,snum; //人口数,房产数,总面积
};
node r[N]; //保存每个人的信息
struct NODE
{
int bnum,pnum,fnum,snum;
NODE(int x,int y,int z,int c)
{
bnum = x;fnum = y;
snum = z;pnum = c;
}
friend bool operator<(NODE A,NODE B)
{
if(A.pnum*B.snum==A.snum*B.pnum)
return A.bnum>B.bnum;
return A.snum*1.0/A.pnum<B.snum*1.0/B.pnum;
}
};
void init()
{
for(int i=0;i<N;++i)
{
pre[i] = i; //初始化父亲节点,人口数=1
r[i].pnum=1;
r[i].fnum=0;
r[i].snum=