首页 > 其他分享 >AcWing 1562. 微博转发

AcWing 1562. 微博转发

时间:2023-03-01 20:55:55浏览次数:38  
标签:int 用户 st 帖子 微博 关注 转发 1562 AcWing

微博被称为中文版的 Twitter。

微博上的用户既可能有很多关注者,也可能关注很多其他用户。

因此,形成了一种基于这些关注关系的社交网络。

当用户在微博上发布帖子时,他/她的所有关注者都可以查看并转发他/她的帖子,然后这些人的关注者可以对内容再次转发…

现在给定一个社交网络,假设只考虑 L 层关注者,请你计算某些用户的帖子的最大可能转发量。

补充

如果 B是 A的关注者,C 是 B 的关注者,那么A 的第一层关注者是 B,第二层关注者是 C。

输入格式

第一行包含两个整数,N 表示用户数量,L 表示需要考虑的关注者的层数。

假设,所有的用户的编号为 1∼N。

接下来 N 行,每行包含一个用户的关注信息,格式如下:

M[i] user_list[i]

M[i] 是第 ii 名用户关注的总人数,user_list[i] 是第 ii 名用户关注的 M[i] 个用户的编号列表。

最后一行首先包含一个整数 K,表示询问次数,然后包含 K 个用户编号,表示询问这些人的帖子的最大可能转发量。

输出格式

按顺序,每行输出一个被询问人的帖子最大可能转发量。

假设每名用户初次看到帖子时,都会转发帖子,只考虑 LL 层关注者。

数据范围

1≤N≤1000
1≤L≤6
1≤M[i]≤100
1≤K≤N

输入样例:

7 3
3 2 3 4
0
2 5 6
2 3 1
2 3 4
1 4
1 5
2 2 6

输出样例:

4
5

代码
思路
1.使用邻接表存储数据,将数据构造为有向图
2.使用bfs广搜,每个用户搜索L层,每次找到到一个新的用户,就把结果+1

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>

using namespace std;
const int N = 1010,M = 100010; 
int h[N],e[M],ne[M],idx;
bool st[N];
int n,L;
void add(int a,int b)
{
    e[idx] = b,ne[idx] = h[a],h[a] = idx++;
}
int bfs(int start)
{
    queue<int> q;
    memset(st,0,sizeof st);
    q.push(start);
    st[start] = true;
    
    int res = 0;
    for(int i = 0;i < L;i++)
    {
        int sz = q.size();
        while (sz--)
        {
            int t = q.front();
            q.pop();
            for(int j = h[t];j != -1;j = ne[j])
            {
                int x = e[j];
                if (!st[x])
                {
                    q.push(x);
                    st[x] = true;
                    res++;
                }
            }
        }
    }
    return res;
}
int main()
{
    scanf("%d%d",&n,&L);
    
    memset(h,-1,sizeof h);
    
    for(int i = 1;i <= n;i++)
    {
        int cnt;
        scanf("%d",&cnt);
        while (cnt--)
        {
            int x;
            scanf("%d",&x);
            add(x,i);
        }
    }
    int m;
    scanf("%d\n",&m);
    while (m--)
    {
        int x;
        scanf("%d",&x);
        printf("%d\n",bfs(x));
    }
    return 0;
}

 

 

标签:int,用户,st,帖子,微博,关注,转发,1562,AcWing
From: https://www.cnblogs.com/polang19/p/17169737.html

相关文章

  • 2023.3.1AcWing蓝桥杯集训·每日一题
    今日的知识点为\(BFS\)(广度优先搜素)。\(BFS\)简要介绍下\(BFS\)算法。首先,\(BFS\)算法适用于边权为\(1\)的图论问题。\(BFS\)算法的解题思路也比较固定。确定......
  • 2023.2.27AcWing蓝桥杯集训·每日一题
    复习的知识点为哈希。AcWing840.模拟散列表题目描述维护一个集合,支持如下几种操作:Ix,插入一个数\(x\);Qx,询问数\(x\)是否在集合中出现过;现在要进行\(N\)次操......
  • 2023.2.28AcWing蓝桥杯集训·每日一题
    今日复习的知识点为Tire树(字典树)。字典树可用于快速存储和查找字符串,并且\(0-1\)字典树也可以用于解决异或问题。AcWing3485.最大异或和题目描述给定一个非负整数数......
  • 模仿新浪微博的listview更多分页按钮(原创)
    因为百事查需要,需要制作这样的更多分页按钮,因为感觉新浪微博的更多分页按钮比较好,就尝试做了一下。1、首先需要考虑布局,就是footer的布局,如下:<?xmlversion="1.0"encoding......
  • 一些微博问题的解决(原创)
    1、腾讯微博用https://open.t.qq.com/cgi-bin/request_token进行用户第三方应用软件授权时出现问题,获得不了RequestToken,原因提示是​​Nottrustedservercertificate​​......
  • 手机照相或选择相册,类似新浪微博的图片处理
    拍照的1.btn1.setOnClickListener(newOnClickListener(){[email protected](Viewv){5.6.Intentintent=newInten......
  • AcWing 1249. 亲戚
    或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的,但如果两个人的......
  • AcWing 2058. 笨拙的手指
    1.题目描述每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。例如,如果她将数字14转换为二进制数,那么正确的结果应为1110,但她可能会写下01......
  • Acwing 1238. 日志统计(双指针)
    https://www.acwing.com/problem/content/1240/1238.日志统计输入样例:71020101010101019110031003输出样例:13首先注意数据范围,0-1e5的数据范围......
  • acwing 281 硬币
    给定n种硬币,其中第i种硬币的面值为Ai,共有piCi个。从中选出若干个硬币,把面值相加,若结果为sS,则称“面值sS能被拼成”。求1∼M1~M之间能被拼成的面值有多少个。#i......