1114. Family Property
2016-09-16 20:17
316 查看
1114. Family Property (25)
时间限制150 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
This time, you are supposed to help us collect the data for family-owned property. Given each person's family members, and the estate(房产)info under his/her own name, we need to know the size of each family, and the average area and number of sets of their real
estate.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=1000). Then N lines follow, each gives the infomation of a person who owns estate in the format:
ID Father Mother k Child1 ... Childk M_estate Area
where ID is a unique 4-digit identification number for each person; Father and Mother are the ID's of this person's parents (if a parent has passed away, -1 will be given instead); k (0<=k<=5)
is the number of children of this person; Childi's are the ID's of his/her children;M_estate is the total number of sets of the real estate under his/her name; and Area is
the total area of his/her estate.
Output Specification:
For each case, first print in a line the number of families (all the people that are related directly or indirectly are considered in the same family). Then output the family info in the format:
ID M AVG_sets AVG_area
where ID is the smallest ID in the family; M is the total number of family members; AVG_sets is the average number of sets of their real estate; and AVG_area is the average area. The average
numbers must be accurate up to 3 decimal places. The families must be given in descending order of their average areas, and in ascending order of the ID's if there is a tie.
Sample Input:
10 6666 5551 5552 1 7777 1 100 1234 5678 9012 1 0002 2 300 8888 -1 -1 0 1 1000 2468 0001 0004 1 2222 1 500 7777 6666 -1 0 2 300 3721 -1 -1 1 2333 2 150 9012 -1 -1 3 1236 1235 1234 1 100 1235 5678 9012 0 1 50 2222 1236 2468 2 6661 6662 1 300 2333 -1 3721 3 6661 6662 6663 1 100
Sample Output:
3 8888 1 1.000 1000.000 0001 15 0.600 100.000 5551 4 0.750 100.000
这题也是并查集,参数好多啊,父母和子女可以合并成一个,用了set存他们的id,而没有用数组去存他们的根节点。
#include<string> #include<iostream> #include<algorithm> #include<vector> #include<set> using namespace std; typedef struct node { double me; double e; int root; set<int>c; int id; double avgs; double avga; }; node p[10000]; bool cmp(node x,node y) { if(x.avga!=y.avga) return x.avga>y.avga; else return x.id<y.id; } int findroot(int num) { if(p[num].root==-1) return num; int r=findroot(p[num].root); p[num].root=r; return r; } int main() { for(int i=0;i<10000;i++) p[i].root=-1; int n; cin>>n; for(int i=0;i<n;i++) { int id; cin> a4ac ;>id; p[id].c.insert(id); for(int j=0;j<2;j++) { int pa; cin>>pa; if(pa!=-1) { p[id].c.insert(pa); } } int cn; cin>>cn; for(int j=0;j<cn;j++) { int cid; cin>>cid; p[id].c.insert(cid); } cin>>p[id].me>>p[id].e; } for(int i=0;i<10000;i++) { if(p[i].c.empty()) continue; int r1=findroot(i); { for(auto str=p[i].c.begin();str!=p[i].c.end();str++) { int r2=findroot(*str); if(r1!=r2) { p[r2].root=r1; p[r1].c.insert(r2); p[r1].c.insert(p[r2].c.begin(),p[r2].c.end()); p[r1].me+=p[r2].me; p[r1].e+=p[r2].e; } } } } vector<node> ans; for(int i=0;i<10000;i++) { if(p[i].c.empty()) continue; if(p[i].root==-1) ans.push_back(p[i]); } cout<<ans.size()<<endl; for(int i=0;i<ans.size();i++) { ans[i].id=*ans[i].c.begin(); ans[i].avgs=ans[i].me/ans[i].c.size(); ans[i].avga=ans[i].e/ans[i].c.size(); } sort(ans.begin(),ans.end(),cmp); for(int i=0;i<ans.size();i++) { printf("%04d %d %.3lf %.3lf\n",ans[i].id,ans[i].c.size(),ans[i].avgs,ans[i].avga); } return 0; }
相关文章推荐
- pat 甲1114. Family Property (dfs)
- PAT (Advanced Level) Practise 1114 Family Property (25)
- 1114. Family Property (25)
- 1114. Family Property (25)
- PAT 1114 Family Property (并查集)
- PAT (Advanced Level) Practise 1114 Family Property (25)
- PAT (Advanced Level) Practise 1114 Family Property (25) 并查集orDFS
- PAT 1114 Family Property
- DP 完全背包 hdu 1114
- Sicily 1114 Food Cubes
- 背包问题 动态规划 HDOJ1114
- hdu 1114 Piggy-Bank【完全背包】
- hdu 1114 Piggy-Bank (DP)
- LPC1114手册学习----时钟篇
- hdu 1114 Piggy-Bank 完全背包
- HDU 1114 Piggy-Bank ( 完全背包 )
- hdu 1114 Piggy-Bank(完全背包)
- Piggy-Bank hdu 1114 ||poj 1384 完全背包
- hdu 1114 Piggy-Bank
- hdu1114完全背包