1114. Family Property 解析
来源:互联网 发布:网页生成软件 编辑:程序博客网 时间:2024/06/05 08:38
并查集的考察。
再合并的时候需要注意让最小的ID当作父亲结点,便于后面的输出。
#include <iostream>#include <vector>#include <set>#include <algorithm>#define MAX 10000using namespace std;struct person{int ID;float m_estate;float aera;float sum;person() { m_estate = 0; aera = 0; sum = 1; }};person p[MAX];vector <person> family;//最终结果set <int> s;//用来统计有资产的idset <int> f;//用来统计家庭int n,n_child;void InitSet() {for (int i = 0; i < MAX; i++) {p[i].ID = i;}}void CompressSet(int top ,int x) {if (p[x].ID != top) {CompressSet(top, p[x].ID);p[x].ID = top;}}int FindSet(int x) {if (p[x].ID != x) {int top = FindSet(p[x].ID);CompressSet(top, x);}return p[x].ID;}void UnionSet(int x ,int y) {int a = FindSet(x);int b = FindSet(y);if (a < b) {p[b].ID = a;p[a].sum += p[b].sum;//不要弄反了}else if(a > b) {p[a].ID = b;p[b].sum += p[a].sum;//不要弄反了}}bool cmp(person p1, person p2) {if (p1.aera > p2.aera)return true;else if (p1.aera == p2.aera && p1.ID < p2.ID)return true;return false;}int main() {cin >> n;InitSet();int id, id_dad, id_mom, id_child;for (int i = 0; i < n; i++) {scanf("%d%d%d%d", &id, &id_dad, &id_mom, &n_child);s.insert(id);if(id_dad != -1)//父亲在UnionSet(id, id_dad);if(id_mom != -1)//母亲在UnionSet(id, id_mom);for (int j = 0; j < n_child; j++) {scanf("%d", &id_child);UnionSet(id, id_child);}scanf("%f%f", &p[id].m_estate, &p[id].aera);}set<int>::iterator it;//累加结果for (it = s.begin(); it != s.end(); it++) {id = FindSet(*it);if (id != *it) { //自己本身不累加p[id].aera += p[*it].aera;p[id].m_estate += p[*it].m_estate;}f.insert(id);}//统计家庭并计算for (it = f.begin(); it != f.end(); it++) {p[*it].aera /= p[*it].sum;p[*it].m_estate /= p[*it].sum;family.push_back(p[*it]);}sort(family.begin(), family.end(), cmp);cout << family.size() << endl;for (int i = 0; i < family.size(); i++) {printf("%04d %.0f %.03f %.03f\n", family[i].ID, family[i].sum, family[i].m_estate, family[i].aera);}return 0;}
0 0
- 1114. Family Property 解析
- 1114. Family Property (25)
- 1114. Family Property (25)
- 1114. Family Property
- 1114. Family Property (25)
- PAT 1114. Family Property
- 1114. Family Property (25)
- 1114. Family Property (25)
- 1114. Family Property
- 1114. Family Property (25)
- 1114. Family Property
- 【PAT】1114. Family Property
- 1114. Family Property (25)
- 1114. Family Property (25)
- 1114. Family Property (25)
- 1114. Family Property (25)
- 【PAT】1114. Family Property (25)
- pat 1114. Family Property (25)
- oracle函数2
- Android AsyncTask
- Week Training: 516 Longest Palindromic Subsequence
- Java笔记之常用容器浅析
- nginx 启动失败 缺少libpcre.so.1
- 1114. Family Property 解析
- LeetCode刷题(C++)——Balanced Binary Tree(Easy)
- Java笔记之浅析String以及Stringbuffer
- Java笔记之JVM内存区浅析
- TaoSama Becomes the God of Stocks dp
- 【最短路】POJ2502 SUBWAY (spfa)
- 1108. Finding Average 解析
- web.py自定义not found 实例
- 浅谈Java反射的实现原理