pat 甲1114. Family Property (dfs)
2017-02-28 16:09
495 查看
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
tips:题目其实给出了家属关系和家族属性两组数据
用g来存储关系,结构体node存放属性.深搜顺便得到联通块的个数。
#include<iostream> #include<vector> #include<cstring> #include<algorithm> using namespace std; int n,sz; int book[10005]; vector<int>g[10005]; struct node{ int set,area; }; node a[10005]; int minid,num,ts,ta; struct node1{ int minid,num; double s,a; friend bool operator<(node1 x,node1 y) { if(x.a!=y.a)return x.a>y.a; else return x.minid<y.minid; } }; node1 ans[10005]; void dfs(int x) { book[x]=1; minid=min(x,minid); num++; ts+=a[x].set; ta+=a[x].area; for(int i=0;i<g[x].size();i++) { if(!book[g[x][i]])dfs(g[x][i]); } } int main() { cin>>n; memset(book,-1,sizeof(book)); for(int j=1;j<=n;j++) { int x,y,z;cin>>x>>y>>z; book[x]=book[y]=book[z]=0; if(y!=-1)g[x].push_back(y),g[y].push_back(x); if(z!=-1)g[x].push_back(z),g[z].push_back(x); int k;cin>>k; for(int i=0;i<k;i++) { int t;cin>>t;book[t]=0; g[x].push_back(t),g[t].push_back(x); } cin>>a[x].set>>a[x].area; } for(int i=0;i<=10000;i++) { minid=11100;num=ts=ta=0; if(!book[i]) { dfs(i); ans[sz].minid=minid; ans[sz].num=num; ans[sz].s=ts*1.0/num; ans[sz].a=ta*1.0/num; sz++; } } cout<<sz<<endl; sort(ans,ans+sz); for(int i=0;i<sz;i++) printf("%04d %d %.3lf %.3lf\n",ans[i].minid,ans[i].num,ans[i].s,ans[i].a); return 0; }
相关文章推荐
- PAT (Advanced Level) Practise 1114 Family Property (25) 并查集orDFS
- PAT 1114 Family Property (并查集)
- PAT (Advanced Level) Practise 1114 Family Property (25)
- PAT (Advanced Level) Practise 1114 Family Property (25)
- PAT 1114 Family Property
- PAT 5 凑算式(dfs)
- PAT 1034. Head of a Gang (30) DFS,删边
- PAT甲题题解-1004. Counting Leaves (30)-统计每层叶子节点个数+dfs
- 1094. The Largest Generation (25)-PAT甲级真题(bfs,dfs,树的遍历)
- 1021. Deepest Root (25)-PAT甲级真题(图的遍历,dfs,连通分量的个数)
- 1030. Travel Plan (30)-PAT甲级真题(Dijkstra + DFS,输出路径,边权)
- **浙大PAT甲级 1103 dfs+快速幂
- PAT 1053. Path of Equal Weight (30)(dfs,依照value[i],给vector进行排序)
- PAT - 甲级 - 1090. Highest Price in Supply Chain (25)(树的遍历DFS)
- PAT - 天梯赛 L3-010 是否完全二叉树(dfs)
- PAT 1114
- 【PAT 1002 All Roads Lead to Rome】+ dfs + dijkstra
- PAT甲级1068【Find More Coins】 dfs
- PAT 1013. Battle Over Cities (25)(并查集||DFS)
- PAT 5 方格填数(dfs)