题目大意:求并查集中集合的个数,及每个集合的详细信息

解题关键:只要不进行unite,集合的根是不会变化的。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
using namespace std;
struct node{
int id,cnt,area;
}pe[];
struct nod{
int id,num,cnt,area;
double avcnt,avar;
}pa[];
bool vis[];
int par[];
int find1(int x){
if(x==par[x]) return x;
else return par[x]=find1(par[x]);
}
bool cmp(nod x,nod y){
if(x.avar==y.avar) return x.id<y.id;
else return x.avar>y.avar;
}
void unite(int x,int y){
x=find1(x);
y=find1(y);
if(x==y) return;
else par[x]=y;//为什么这里改变一下会有变化???
}
int main(){
int n;
scanf("%d",&n);
for(int i=;i<;i++){
par[i]=i;
}
for(int i=;i<n;i++){
int t1,t2,t3;
scanf("%d%d%d",&t1,&t2,&t3);
vis[t1]=true;
if(t2!=-){
unite(t1, t2);
vis[t2]=true;
}
if(t3!=-){
unite(t1,t3);
vis[t3]=true;
}
int k;
scanf("%d",&k);
for(int j=;j<k;j++){
int temp;
scanf("%d",&temp);
unite(t1,temp);
vis[temp]=true;
}
pe[i].id=t1;
int t4,t5;
scanf("%d%d",&t4,&t5);
pe[i].cnt=t4;
pe[i].area=t5;
} for(int i=;i<n;i++){
int id=find1(pe[i].id);
//id=find1(id);
pa[id].cnt+=pe[i].cnt;
pa[id].area+=pe[i].area;
// pa[id].num++;
} for(int i=;i<=;i++){//这里是核心
if(vis[i]){
//int t=par[i]=find1(i);
int t=find1(i);
if(!pa[t].num){
pa[t].id=i;
}
pa[t].num++;
pa[t].avar=pa[t].area*1.0/pa[t].num;//这里其实是重复覆盖的
pa[t].avcnt= pa[t].cnt*1.0/pa[t].num;
}
} sort(pa,pa+,cmp);
int ans=;
for(int i=;i<;i++){
if(pa[i].num){
ans++;
}
//else break;
}
printf("%d\n",ans);
for(int i=;i<ans;i++){
if(pa[i].num){
printf("%04d %d %.3lf %.3lf\n",pa[i].id,pa[i].num,pa[i].avcnt,pa[i].avar);
}
} }

[patl2-007]家庭房产的更多相关文章

  1. 团体程序设计天梯赛-练习集L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  2. L2-007. 家庭房产

    L2-007. 家庭房产 题目链接:https://www.patest.cn/contests/gplt/L2-007 并查集 初学,看这题的时候完全没有什么好的想法,参考了@yinzm的blog用 ...

  3. L2-007 家庭房产 (25 分)

    L2-007 家庭房产 (25 分)   给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤),随后N行,每行按下 ...

  4. L2-007. 家庭房产(并查集)*

    L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...

  5. 天梯赛 L2-007. (并查集) 家庭房产

    题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...

  6. PATL2-007. 家庭房产-并查集

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  7. pat 团体天梯赛 L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产 ...

  8. L2-007 家庭房产 (25 分) (并查集)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...

  9. PAT L2-007 家庭房产

    https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 给定每个人的家庭成员和其自己名下的房产,请你 ...

  10. pat 团体赛练习题集 L2-007. 家庭房产

    给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式给出一个人的房产: ...

随机推荐

  1. SQL 存在一个表而不在另一个表中的数据

    原文链接:http://blog.csdn.net/windren06/article/details/8188136 (转)A.B两表,找出ID字段中,存在A表,但是不存在B表的数据.A表总共13w ...

  2. ionic2——安装Java jdk并配置环境变量

    前言:jdk是 Java 语言的软件开发工具包,它包含了Java 的运行环境,Java 工具和Java 基础的类库.做java web开发,android开发,还有现在流行的混合式App开发,都需要安 ...

  3. 遍历Newtonsoft.Json.Linq.JObject

    JObject 遍历: 引用命名空间:using Newtonsoft.Json.Linq; JObject _jObject = JObject.Parse("{'ID':'001','M ...

  4. hdu-2544-最短路(Bellman-Ford算法模板)

    题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...

  5. hdu 1671 Phone List (Trie树)

    简单的字典树应用,在建树的时候判断就行了. 需要注意的语法: 在使用malloc和free来处理动态内存的时候,仅仅是释放了这个对象所占的内存,而不会调用这个对象的析构函数:使用new和delete就 ...

  6. THUWC2019 滚粗记

    因为真的滚粗了,所以咕咕咕 膜清华爷 OYJason

  7. shell实现文件内容查询如输入姓名结果显示电话号码等信息

    #!/bin/awk -f BEGIN{FS=","; if(ARGC>2){name=ARGV[1];delete ARGV[1]} else{ echo "pl ...

  8. python实现进程的并发

    __author__ = 'luozt' import telnetlib import multiprocessing import random def telnet(ip,hostname): ...

  9. testng监听ISuiteListener

    实现ISuiteListener public class TestNgBeforeAction implements ISuiteListener{ public void onStart(ISui ...

  10. Java-API:un-java.text.DecimalFormat

    ylbtech-Java-API:java.text.DecimalFormat 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://docs. ...