总时间限制: 1000ms 内存限制: 65536kB描述
微博提供了一种便捷的交流平台。一条微博中,可以提及其它用户。例如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
来源医学部计算概论2011年期末考试(谢佳亮)
1 #include<iostream>
2 #include<algorithm>
3 using namespace std;
4 struct node
5 {
6 int fsz;//发送者
7 int rs;//人数
8 int tjz[80];//提及者
9 int tjnow;//已经提及的人数
10 }a[10001];
11 int btj[1000001];
12 int maxn=-1;//被提及最多的人的次数
13 int bh;//被提及最多的人得编号
14 int zdbh;//最大编号
15 int bc[10001];
16 int now=0;
17 int main()
18 {
19 int n;
20 cin>>n;
21 for(int i=1;i<=n;i++)
22 {
23 cin>>a[i].fsz;
24 a[i].tjnow=1;
25 if(a[i].fsz>zdbh)
26 zdbh=a[i].fsz;
27 cin>>a[i].rs;
28 for(int j=a[i].tjnow;j<a[i].rs+a[i].tjnow;j++)
29 {
30 cin>>a[i].tjz[j];
31 btj[a[i].tjz[j]]++;
32 if(btj[a[i].tjz[j]]>maxn)
33 {
34 maxn=btj[a[i].tjz[j]];
35 bh=a[i].tjz[j];
36 }
37 }
38 a[i].tjnow=a[i].rs+a[i].tjnow;
39 }
40 cout<<bh<<endl;
41 for(int i=0;i<=9999;i++)
42 {
43 for(int j=1;j<=a[i].rs;j++)
44 {
45 if(a[i].tjz[j]==bh)
46 {
47 bc[now]=a[i].fsz;
48 now++;
49 }
50 }
51 }
52 sort(bc+0,bc+now);
53 for(int i=0;i<now;i++)
54 {
55 if(bc[i]==bc[i+1])
56 continue;
57 else cout<<bc[i]<<" ";
58 }
59 return 0;