1107. Social Clusters (30)

来源:互联网 发布:全国高校校花知乎 编辑:程序博客网 时间:2024/06/06 03:18


时间限制
1000 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

When register on a social network, you are always asked to specify your hobbies in order to find some potential friends with the same hobbies. A "social cluster" is a set of people who have some of their hobbies in common. You are supposed to find all the clusters.

Input Specification:

Each input file contains one test case. For each test case, the first line contains a positive integer N (<=1000), the total number of people in a social network. Hence the people are numbered from 1 to N. Then N lines follow, each gives the hobby list of a person in the format:

Ki: hi[1] hi[2] ... hi[Ki]

where Ki (>0) is the number of hobbies, and hi[j] is the index of the j-th hobby, which is an integer in [1, 1000].

Output Specification:

For each case, print in one line the total number of clusters in the network. Then in the second line, print the numbers of people in the clusters in non-increasing order. The numbers must be separated by exactly one space, and there must be no extra space at the end of the line.

Sample Input:
83: 2 7 101: 42: 5 31: 41: 31: 44: 6 8 1 51: 4
Sample Output:
34 3 1

参照算法笔记P311.
没有好好理解并查集。

这里应该考虑爱好相同时,把人并起来,而不是爱好。


#include<stdio.h>#include<algorithm>using namespace std;bool comp(int a,int b){return a>b;}int course[1010]={0};int tree[1010];int cnt[1010]={0};int findroot(int x){if(tree[x]==-1)return x;return tree[x]=findroot(tree[x]);}void init(int n){int i;for(i=1;i<=n;i++){tree[i]=-1;}}int main(){int n,i,j,k,temp;scanf("%d",&n);init(n);for(i=1;i<=n;i++){scanf("%d:",&k);for(j=0;j<k;j++){scanf("%d",&temp);if(course[temp]==0){course[temp]=i;}else{int a=findroot(i);int b=findroot(course[temp]);if(a!=b){tree[a]=b;}}}}int cou=0;for(i=1;i<=n;i++){int index=findroot(i);cnt[index]++;if(tree[i]==-1){cou++;}}sort(cnt+1,cnt+1+n,comp);printf("%d\n",cou);printf("%d",cnt[1]);for(i=2;i<=cou;i++){printf(" %d",cnt[i]);}} 



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微博账号被冻结了怎么办 微博一天多次解冻怎么办 肿瘤对化疗不敏感怎么办 2个月宝宝肺炎怎么办 小孩咳嗽2个月怎么办 两个月的小孩子气管炎怎么办? 小孩子两个月发烧38度怎么办 两个月的小孩子咳嗽怎么办 5个月宝宝吃奶少怎么办 26岁的1型糖尿病怎么办 睡前吃得太饱怎么办 胰岛素2小时>300怎么办 血清c肽测定高怎么办 体测蛋白质和骨骼肌偏高怎么办 半个月重了十斤怎么办 月经停了2个月怎么办 在练腹肌中腹痛怎么办 越练肌肉越肥怎么办 喘不过气来 心闷怎么办 被气得喘不过气怎么办 健身完头晕想吐怎么办 吃多了反胃头晕怎么办 合同未约定退货货物积压怎么办 运动内衣把胸压平怎么办 经常穿皮鞋脚臭怎么办 买衣服胸围小了怎么办 内衣下胸围太紧怎么办 穿文胸衣服要开怎么办 运动内衣的拉链老来怎么办 胸罩没干急着穿怎么办 跑步时大腿很痒怎么办 胖大腿内侧磨伤怎么办 内衣围带过松怎么办 内衣底围特别紧怎么办 全棉衣服上的油怎么办 高腰牛仔裤腰大了怎么办 新买衣服太硬怎么办 棉麻的衣服发硬怎么办 新衣服太硬怎么办雪纺 衣服硬的咯人怎么办 脖子上的勒痕怎么办