1076 Forwards on Weibo (链接表层序遍历)

题意:给出关注列表,博主的粉丝会给博主点赞,粉丝的粉丝也会给博主点赞,一直递推到最多L层,求,最后会有多少人给博主点赞。

思路:将关注的粉丝用链接表存储,再对博主进行层序遍历,遍历L+1层(因为不能包含博主层),并且将遍历过的人都标记防止重复计算,同时算出所有遍历到的所有结点。结点数-1(不包含博主)即为答案。

(刚开始写了个深度为L+1的深度优先遍历,结果不对,因为深度遍历过的结点可能会与后面的兄弟结点重复,造成提前标记,故只能使用层序遍历)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

vector<int>son[1010];
bool vis[1010];
int bfs(int u,int k){
    memset(vis,0,sizeof vis);
    queue<int>q;
    q.push(u);
    k++;
    int res=0;
    while(q.size()&&k--){
        int len=q.size();
        while(len--){
            int f=q.front();
            q.pop();
            if(vis[f])continue;//防止重复计算
            res++;
            vis[f]=1;
            for(auto x:son[f]){
                if(!vis[x]){
                    q.push(x);
                }
            }
        }
    }
    return res;
}
int main(){
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        int m;cin>>m;
        while(m--){
            int a;cin>>a;
            son[a].push_back(i);
        }
    }
    int q;cin>>q;
    while(q--){
        int a;cin>>a;
        cout<<bfs(a,k)-1<<endl;
    }
}
相关推荐
放下华子我只抽RuiKe53 小时前
算法的试金石:模型训练、评估与调优的艺术
人工智能·深度学习·算法·机器学习·自然语言处理·数据挖掘·线性回归
oem1103 小时前
C++中的享元模式实战
开发语言·c++·算法
流云鹤3 小时前
每日一题0316
算法
leonkay4 小时前
Golang语言闭包完全指南
开发语言·数据结构·后端·算法·架构·golang
颜酱4 小时前
BFS 与并查集实战总结:从基础框架到刷题落地
javascript·后端·算法
casual~5 小时前
第?个质数(埃氏筛算法)
数据结构·c++·算法
仰泳的熊猫5 小时前
题目2308:蓝桥杯2019年第十届省赛真题-旋转
数据结构·c++·算法·蓝桥杯
hssfscv5 小时前
力扣练习训练2(java)——二叉树的中序遍历、对称二叉树、二叉树的最大深度、买卖股票的最佳时机
java·数据结构·算法
y = xⁿ6 小时前
【LeetCodehot100】二叉树大合集 T94:二叉树的中序遍历 T104:二叉树的最大深度 T226:翻转二叉树 T101:对称二叉树
后端·算法·深度优先
不想看见4046 小时前
Search a 2D Matrix II数组--力扣101算法题解笔记
数据结构·算法