1076 Forwards on Weibo
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相关推荐
- PAT甲级1076 Forwards on Weibo (30 分) :[C++题解]图论、bfs
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: BFS如何搜前k层?统计前k层的点数. ac代码 #include<bits/stdc++.h> using names ...
- PAT A级 1076 Forwards on Weibo (超详细BFS做法)
一切杀不死我的,都将使我强大! 1076 Forwards on Weibo(30 分) Weibo is known as the Chinese version of Twitter. One u ...
- 1076 Forwards on Weibo——最后用menset函数
方法一: #include<cstdio> #include<queue> #include<vector> #include<algorithm> # ...
- 1076 Forwards on Weibo (30 分)
广度搜索BFS 注意理解题意,关注者与被关注者的关系. 同时L是表示,在L层以内的所有节点,包括L层. #include<bits/stdc++.h> using namespace st ...
- 1076. Forwards on Weibo 解析
注意题意输入粉丝的时候,第i行是第i个关注了谁,而不是他的粉丝. 在遍历的时候也是只转发第一次,所以要一个isVis数组去标记一下. #include <iostream> #includ ...
- 【PAT甲级 - C++题解】1076 Forwards on Weibo
✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
- 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 ...
- 普朗特迈耶稀疏波_埃里克·迈耶的访谈
普朗特迈耶稀疏波 I've always wanted to interview Eric Meyer. His early CSS books are a big reason this blog ...
- PAT (Advanced Level) Practice 题解代码 - II (1051-1100)
PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...
最新文章
- [HAOI2015]按位或
- 做爱做的事,做有快感的事
- 基于黄金分割的修正Powell算法
- Chrome 访问一次 Controller,请求却执行两次
- 2012年度最新免费web开发设计资源荟萃
- 搜索 —— 暴力搜索
- jdk包含java语言核心的类_1.1 jvm核心类加载器--jdk源码剖析
- 人人网 api2.0 java_API2.0文档
- MySQL length函数使用详解
- 一位程序员从业余项目被收购中所学到的
- HttpModule HttpHandler(转)
- 【Python自动化Excel】pandas处理Excel数据的基本流程
- pytorch实现textCNN
- 激光打印机无线服务器,插上无线翅膀 兄弟1218W激光打印机评测
- 金蝶中间层服务器组件注册使用信任方式,提示:用户名或密码错误
- [血泪整理]为何加载EDEM和FLUENT耦合接口显示ERROR126
- 机器人学关于SE(3)、se(3)、SO(3)、so(3)的理解
- 反相器下降沿延迟时间计算
- 网页设计中文案是网站的性格
- python 12306登录 2019_python实现12306登录并保存cookie的方法示例