1. 这题说的是,微博上人们之间有关注和被关注的关系,如果一个人发博,他的追随者就可能转发,追随者的追随者又可能转发,以此类推。现在给定一个人,求其微博可能被转发的人数,但是注意有一个关注链长的上限,超过这个上限认为不会再转发。可见要有层数这个属性。

2. 本题在BFS专题下,但是不需要两个BFS函数,因为不用考虑图是不是强连通图,对于每一个人,关注他所在的强连通子图就好了,所以只需要一个BFS函数。

3. 由于BFS不像DFS有嵌套,所以很多变量是局部还是全局,判断顺序的先后要求都没那么高了,因为不会有覆盖问题。

4. 注意读清楚题目,我设置的邻接矩阵G[i][j]表示i的粉丝是j,但是读入的时候给出的是每个人的追随对象。不要弄反了。

这是例题的图示

AC代码

#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
typedef long long LL;using namespace std;const int maxn = 1010;//总人数上限 int totalNum,maxL;bool G[maxn][maxn] = {0};int BFS(int idx){int layer[maxn] = {0};//层数int forwards = 0;//可能的转发数bool inq[maxn] = {0};//已经入队的下标  queue<int> Q;Q.push(idx);inq[idx] = 1;while(!Q.empty()){int now = Q.front();Q.pop();for(int k=1;k<=totalNum;k++){if(G[now][k]==1&&inq[k]==0){layer[k] = layer[now]+1;if(layer[k]<=maxL){Q.push(k);inq[k]=1;forwards++;}else break;   }   }}return forwards;} int main(){scanf("%d %d",&totalNum,&maxL);for(int i=1;i<=totalNum;i++){int num;scanf("%d",&num);for(int k=0;k<num;k++){int j;scanf("%d",&j);G[j][i] = 1;// i追随很多j }}int qNum;scanf("%d",&qNum);while(qNum--){int idx;scanf("%d",&idx);  printf("%d\n",BFS(idx));}return 0;
}

1076 Forwards on Weibo相关推荐

  1. PAT甲级1076 Forwards on Weibo (30 分) :[C++题解]图论、bfs

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: BFS如何搜前k层?统计前k层的点数. ac代码 #include<bits/stdc++.h> using names ...

  2. PAT A级 1076 Forwards on Weibo (超详细BFS做法)

    一切杀不死我的,都将使我强大! 1076 Forwards on Weibo(30 分) Weibo is known as the Chinese version of Twitter. One u ...

  3. 1076 Forwards on Weibo——最后用menset函数

    方法一: #include<cstdio> #include<queue> #include<vector> #include<algorithm> # ...

  4. 1076 Forwards on Weibo (30 分)

    广度搜索BFS 注意理解题意,关注者与被关注者的关系. 同时L是表示,在L层以内的所有节点,包括L层. #include<bits/stdc++.h> using namespace st ...

  5. 1076. Forwards on Weibo 解析

    注意题意输入粉丝的时候,第i行是第i个关注了谁,而不是他的粉丝. 在遍历的时候也是只转发第一次,所以要一个isVis数组去标记一下. #include <iostream> #includ ...

  6. 【PAT甲级 - C++题解】1076 Forwards on Weibo

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  7. PAT_甲级_1076 Forwards on Weibo (30point(s)) (C++)【BFS/微博扩散】

    目录 1,题目描述 题目描述 输入 2,思路 BFS算法 3,AC代码 4,解题过程 第一搏 第二搏 1,题目描述 Sample Input: 7 3 3 2 3 4 0 2 5 6 2 3 1 2 ...

  8. 普朗特迈耶稀疏波_埃里克·迈耶的访谈

    普朗特迈耶稀疏波 I've always wanted to interview Eric Meyer. His early CSS books are a big reason this blog ...

  9. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)

    PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...

最新文章

  1. [HAOI2015]按位或
  2. 做爱做的事,做有快感的事
  3. 基于黄金分割的修正Powell算法
  4. Chrome 访问一次 Controller,请求却执行两次
  5. 2012年度最新免费web开发设计资源荟萃
  6. 搜索 —— 暴力搜索
  7. jdk包含java语言核心的类_1.1 jvm核心类加载器--jdk源码剖析
  8. 人人网 api2.0 java_API2.0文档
  9. MySQL length函数使用详解
  10. 一位程序员从业余项目被收购中所学到的
  11. HttpModule HttpHandler(转)
  12. 【Python自动化Excel】pandas处理Excel数据的基本流程
  13. pytorch实现textCNN
  14. 激光打印机无线服务器,插上无线翅膀 兄弟1218W激光打印机评测
  15. 金蝶中间层服务器组件注册使用信任方式,提示:用户名或密码错误
  16. [血泪整理]为何加载EDEM和FLUENT耦合接口显示ERROR126
  17. 机器人学关于SE(3)、se(3)、SO(3)、so(3)的理解
  18. 反相器下降沿延迟时间计算
  19. 网页设计中文案是网站的性格
  20. python 12306登录 2019_python实现12306登录并保存cookie的方法示例

热门文章

  1. iOS 设置UILabel 的行间距
  2. 2019BATJ面试题详解:MyBatis+MySQL+Spring+Redis+多线程
  3. Java面试题总结-Day4
  4. CentOS7启动图形界面
  5. P1214 等差数列
  6. IOS/Android模拟器运行APP调试方法
  7. Android上成功实现了蓝牙的一些Profile
  8. 连表/子查询/计算的sql
  9. 【会议纪要】非洲新经济-线下沙龙分享
  10. 交互式数据可视化-D3.js(一)