2164: 话题焦点人物
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:2
题目描述
微博提供了一种便捷的交流平台。一条微博中,可以提及其它用户。例如Lee发出一条微博为“期末考试顺利@Kim@Neo”,则Lee提及了Kim和Neo两位用户。
我们收集了N(1<N<10000)条微博,并已将其中的用户名提取出来,用小于等于100的正整数表示。
通过分析这些数据,我们希望发现大家的话题焦点人物,即被提及最多的人(题目保证这样的人有且只有一个),并找出那些提及它的人。
输入
输入共两部分第一部分是微博数量N,1<N<10000。
第二部分是N条微博,每条微博占一行,表示为发送者序号a,提及人数k(0<=k<=20),然后是k 个被提及者序号b1,b2…bk;
其中a和b1,b2…bk均为大于0小于等于100的整数。相邻两个整数之间用单个空格分隔。
输出
输出分两行第一行是被提及最多的人的序号第二行是提及它的人的序号,从小到大输出,相邻两个数之间用单个空格分隔。同一个序号只输出一次。
样例输入 复制
5
1 2 3 4
1 0
90 3 1 2 4
4 2 3 2
2 1 3
样例输出 复制
3
1 2 4
提示
#include<bits/stdc++.h> using namespace std; struct node { int a; int b[30]; int k; }; node p[10010]; int n,maxCnt=0,ans=0,c[110]={0}; int cmp(node x,node y) { return x.a<y.a; } int main(){ cin>>n; for (int i=1;i<=n;i++) { cin>>p[i].a>>p[i].k; for (int j=1;j<=p[i].k;j++) { cin>>p[i].b[j]; c[p[i].b[j]]++; } } for (int i=0;i<110;i++) { if (c[i]>maxCnt) { maxCnt=c[i]; ans=i; } } sort(p+1,p+n+1,cmp); cout<<ans<<endl; int lastA=-1; for (int i=1;i<=n;i++) { for (int j=1;j<=p[i].k;j++) { if (p[i].b[j]==ans&&p[i].a!=lastA){ cout<<p[i].a<<" "; lastA=p[i].a; break; } } } return 0; }