【1076】Forwards on Weibo (30 分)

简介: 【1076】Forwards on Weibo (30 分)【1076】Forwards on Weibo (30 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
//结构体内加layer(结点层号),用邻接表 BFS
const int MAXV=1010;
struct Node{
  int id;  //结点编号
  int layer;  //结点层号
}; //不要漏了分号
vector<Node> Adj[MAXV];  //邻接表
bool inq[MAXV]={false}; //顶点是否已经被加入过队列
int BFS(int s,int L){ //start为起始结点,L为层数上限
  int numForward=0;   //转发数
  queue<Node> q;  //BFS队列
  Node start;    //定义初始结点
  start.id=s;     //初始结点编号
  start.layer=0;  //初始结点层号为0
  q.push(start);  //将起始结点压入队列
  inq[start.id]=true;  //起始结点的编号设为已被加入过队列
  while(!q.empty()){
    Node topNode=q.front();  //取出队首结点
    q.pop();  //队首结点出队
    int u=topNode.id;  //队首结点的编号
    for(int i=0;i<Adj[u].size();i++){
      Node next=Adj[u][i];  //从u出发能到达的结点next
      next.layer=topNode.layer+1;  //next的层号等于当前结点层号加1
      //如果next的编号未被加入过队列,且next的层次不超过上限L
      if(inq[next.id] == false && next.layer <=L){
        q.push(next); //将next入队
        inq[next.id]=true;  //next的编号设为已被加入过队列
        numForward++; //转发数加1
      }
    }
  }
  return numForward; //返回转发数
}
int main(){   
  Node user;
  int n,L,numFollow,idFollow;
  scanf("%d%d",&n,&L);  //结点个数 层数上限
  for(int i=1;i<=n;i++){ 
    user.id=i;   //用户编号为i
    scanf("%d",&numFollow); //i号用户关注的人数
    for(int j=0;j< numFollow; j++) {
      scanf("%d",&idFollow);  //i号用户关注的用户编号
      Adj[idFollow].push_back(user); //边idFollow->i
    }
  }
  int numQuery,s;
  scanf("%d",&numQuery);//查询个数
  for(int i=0;i<numQuery;i++){ 
    memset(inq,false,sizeof(inq)); //inq数组初始化
    scanf("%d",&s); //起始结点编号
    int numFollow=BFS(s,L); //BFS,返回转发数
    printf("%d\n",numFollow); //输出转发数
  }
  system("pause");
    return 0;   
}
相关文章
|
7月前
|
数据采集 前端开发 Java
基于Java爬取微博数据(一) 微博主页正文列表数据
【5月更文挑战第16天】讲述如何通过 Java 爬取微博数据 微博主页正文列表数据,以及相应的注意点
|
7月前
|
JSON 前端开发 Java
基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
【5月更文挑战第15天】基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
|
7月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day31】腾讯QQ(二)按类别统计QQ号相关信息
每天一道大厂SQL题【Day31】腾讯QQ(二)按类别统计QQ号相关信息
79 0
|
算法 Java PHP
半天不到,实现仿微博URL短地址算法与解析
半天不到,实现仿微博URL短地址算法与解析
Typecho-handsome主题统计访客人次
本次增强是基于handsome6.0版本的一个右侧栏博客信息的增强,如下图所示,初始的handsome主题博客信息栏只有四个栏目信息————分别是:文章数目,评论数目,运行天数,最后活动。那么该如何修改源代码来实现增加多个栏目呢?本次以添加一个记录网站总浏览人次的功能为例
236 0
Typecho-handsome主题统计访客人次
【CCF-CSP】201812-2-小明放学100分(含详细注释)
【CCF-CSP】201812-2-小明放学100分(含详细注释)
178 0
【CCF-CSP】201812-2-小明放学100分(含详细注释)
微博 - 如何修改微博昵称?
微博 - 如何修改微博昵称?
120 0
微博 - 如何修改微博昵称?
【1124】Raffle for Weibo Followers (20分)【map】
【1124】Raffle for Weibo Followers (20分)【map】 【1124】Raffle for Weibo Followers (20分)【map】
95 0
【1152】Google Recruitment (20 分)
【1152】Google Recruitment (20 分) 【1152】Google Recruitment (20 分)
117 0
|
SQL 存储 安全
框架研究(QQ群)第一次的讨论记录(07-05-17)
2007-05-17 17:50:47 Ivony...近期我会公布DbUtility的两个应用实例…… 2007-05-17 17:51:37 jykDbUtility 是什么来着 2007-05-17 17:52:31 Ivony...一个是怎样使用模板功能查询指定时间段内数据。
940 0