思路:
考察的是并查集和结构体排序,再读入数据的时候按照编号大小,将编号小的树合并到编号大的树上,然后遍历所有数据,将家庭一样的结构体放在一起(放在a数组里),并跟新家庭的属性信息,最后排序输出。
AC 代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5,INF = 0x3f3f3f3f;
struct home {
int my_id,fa_id,mo_id;
int kid_num;
vector<int> kid;
int sum,area;
}h[1050];
struct node {
int id;
int num;
double fnum,sarea;
bool flag;
}a[N];
vector<node> ans;
int fa[N],n;
bool vst[N];
int find(int x) {
if(fa[x] != x)
fa[x] = find(fa[x]);
return fa[x];
}
void merg(int x,int y) {
int fx = find(x),fy = find(y);
if(fx < fy) {
fa[fy] = fx;
}
else
fa[fx] = fy;
}
bool cmp(node a,node b) {
if(a.sare