概述
#include
#include
using namespace std;
struct DATA {
int id, fid, mid, num, area;
int cid[10];
}data[1005];
struct node {
int id, people;
double num, area;
bool flag = false;
}ans[10000];
int father[10000];
bool visit[10000];
int find(int x) {
while(x != father[x])
x = father[x];
return x;
}
void Union(int a, int b) {
int faA = find(a);
int faB = find(b);
if(faA > faB)
father[faA] = faB;
else if(faA < faB)
father[faB] = faA;
}
int cmp1(node a, node b) {
if(a.area != b.area)
return a.area > b.area;
else
return a.id < b.id;
}
int main() {
int n, k, cnt = 0;
scanf("%d", &n);
for(int i = 0; i < 10000; i++)
father[i] = i;
for(int i = 0; i < n; i++) {
scanf("%d %d %d %d", &data[i].id, &data[i].fid, &data[i].mid, &k);
visit[data[i].id] = true;
if(data[i].fid != -1) {
visit[data[i].fid] = true;
Union(data[i].fid, data[i].id);
}
if(data[i].mid != -1) {
visit[data[i].mid] = true;
Union(data[i].mid, data[i].id);
}
for(int j = 0; j < k; j++) {
scanf("%d", &data[i].cid[j]);
visit[data[i].cid[j]] = true;
Union(data[i].cid[j], data[i].id);
}
scanf("%d %d", &data[i].num, &data[i].area);
}
for(int i = 0; i < n; i++) {
int id = find(data[i].id);
ans[id].id = id;
ans[id].num += data[i].num;
ans[id].area += data[i].area;
ans[id].flag = true;
}
for(int i = 0; i < 10000; i++) {
if(visit[i])
ans[find(i)].people++;
if(ans[i].flag)
cnt++;
}
for(int i = 0; i < 10000; i++) {
if(ans[i].flag) {
ans[i].num = (double)(ans[i].num * 1.0 / ans[i].people);
ans[i].area = (double)(ans[i].area * 1.0 / ans[i].people);
}
}
sort(ans, ans + 10000, cmp1);
printf("%dn", cnt);
for(int i = 0; i < cnt; i++)
printf("%04d %d %.3f %.3fn", ans[i].id, ans[i].people, ans[i].num, ans[i].area);
return 0;
}
最后
以上就是迷路流沙为你收集整理的用c语言设计楼盘销售管理系统,L2-007. 家庭房产-PAT团体程序设计天梯赛GPLT的全部内容,希望文章能够帮你解决用c语言设计楼盘销售管理系统,L2-007. 家庭房产-PAT团体程序设计天梯赛GPLT所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复