测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A36088. 话题焦点人物

填空题 较易

题目描述

话题焦点人物

题目描述

微博提供了一种便捷的交流平台。一条微博中,可以提及其它用户。例如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> #include<stdio.h> #include<set> #include<vector> using namespace std; int main(){ int n; cin >> n; int a[n]; int b[100]={0}; int u[100][100]={0}; //被提及者的 发送人 for (int i=0;i<n;i++){ int sender=0; //发送者 int k=0; scanf("%d %d", &sender,&k); for (int j=0;j<k;j++){ int m; //提及者 scanf("%d",&m); b[m]++; u[m][sender] =sender;////被提及者的 发送人 } } int big=1; int num=0;//被提及最多的人 for (int i=1;i<=100;i++){ if (b[i]>big){ big=b[i]; num=i; } } printf("%d \n",num); for (int i=0;i<100;i++){ int user =u[num][i]; if(user != 0){ printf("%d ",u[num][i]); } } }

答案解析

#include <iostream>

#include <vector>

#include <algorithm>

#include <set>

using namespace std;


int main() {

   int N;

   cin >> N;


   // 统计每个人被提及的次数

   vector<int> mentionCount(101, 0);

   // 记录每个被提及者的发送者集合

   vector<set<int>> senders(101);


   for (int i = 0; i < N; i++) {

       int sender, k;

       cin >> sender >> k;

       

       for (int j = 0; j < k; j++) {

           int mentioned;

           cin >> mentioned;

           mentionCount[mentioned]++;

           senders[mentioned].insert(sender);

       }

   }


   // 找出被提及最多的人

   int maxCount = 0;

   int targetUser = 0;

   for (int i = 1; i <= 100; i++) {

       if (mentionCount[i] > maxCount) {

           maxCount = mentionCount[i];

           targetUser = i;

       }

   }


   // 输出结果

   cout << targetUser << endl;

   for (int user : senders[targetUser]) {

       cout << user << " ";

   }

   cout << endl;

   return 0;

}    

上一题 下一题