A1076 Forwards on Weibo (30) 图的遍历BFS

本题思路
考虑转发,且有层数(即转发最多通过几个非直接follows),所以考虑用BFS,因为BFS不涉及递归之类的,所以要用Node设置layer值。

#include<cstdio>
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
const int maxn=1010;
struct node
{
	int layer;
	int id;
};
vector<int> ans;
bool vis[maxn]={false};
vector<node>adj[maxn];
int G[maxn][maxn];
void BFS(int l,int id,int &num)
{
	vis[id]=true;
	queue<node> q;
	node temp;
	temp.id=id;
	temp.layer=0;
	q.push(temp);
	while(!q.empty())
	{
		temp=q.front();
		q.pop();
	    int u=temp.id;
	    for(int i=0;i<adj[u].size();i++)
	    {
	    	node v=adj[u][i];
	    	v.layer=temp.layer+1;
	    	if(v.layer<=l&&vis[v.id]==false)
	    	{
	    		q.push(v);
	    		vis[v.id]=true;
	    		num++;
			}
		}
	}
}
int main()
{
	int n,l,num,id,k;
	node user;
	cin>>n>>l;
	for(int i=1;i<=n;i++)
	{
		user.id=i;
		scanf("%d",&num);
		for(int j=1;j<=num;j++)
		{
			scanf("%d",&id);
			adj[id].push_back(user);
		}
	}
	cin>>k;
	for(int i=0;i<k;i++)
	{
		memset(vis,false,maxn);
		scanf("%d",&id);
		num=0;
		BFS(l,id,num);
		ans.push_back(num);
	}
	for(int i=0;i<ans.size();i++)
	{
		printf("%d\n",ans[i]);
	}
}

热门文章

暂无图片
编程学习 ·

javascript 实现所有浏览器异步加载的工具

javascript 实现所有浏览器异步加载的工具 //异步加载 实现 function loadScript(url, callback){ //新建一个script 元素 var script = document.createElement(‘script’); //再往script中添加类型 script.type=“text/javascript”; if(script.readyState){ //每当 rea…
暂无图片
编程学习 ·

Guns V4.0中的代码生成的使用

Guns V4.0的生成代码功能1.创建需要用的表,并在数据库中生成2.点击Guns中的代码生成3.运行生成的sql4.权限配置5.End 1.创建需要用的表,并在数据库中生成 创建自己的表 DROP TABLE IF EXISTS `book`; CREATE TABLE `book` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 主键…
暂无图片
编程学习 ·

超星尔雅《中庸》精读

超星学习通app《中庸》精读 答案 孟琢“四书”的形成(一)1【单选题】著作( )是一部论述了人生修养境界的道德哲学专著。 答案:《中庸》A、《周易》B、《史记》C、《诗经》D、《中庸》2【单选题】中国古代思想家( )是儒家学派的创始人,被后世尊称为万世师表。 答案:孔子A、孔…
暂无图片
编程学习 ·

Hadoop集群的四个配置文件的常用属性解析

在启动hadoop集群的守护线程时,一定会加载并运行相关的class字节码文件。通过common模块和hdfs模块里的源码可以看到,它们读取了相关的配置文件。hadoop-common-2.7.3-sources.jar下的org.apache.hadoop.conf.Configuration源文件的部分源码:package org.apache.hadoop.conf…
暂无图片
编程学习 ·

NC6 基于元数据的持久化服务接口实现类

基于元数据的持久化服务接口实现类: package nc.md.persist.framework.imp;import java.util.Collection;import nc.md.data.access.NCObject; import nc.md.data.criterion.QueryCondition; import nc.md.model.MetaDataException; import nc.md.persist.framework.IMDPersis…
暂无图片
编程学习 ·

nginx 通过域名代理tcp端口

碰到一种场景,使用nginx进行反向代理tcp端口,网上大部门的设置都是一个端口代理一个端口,没有一个端口通过域名代理后端多个端口的情况。 在sf上面看到一个设置教程,记录下 只需要修改nginx.conf,添加如下配置即可, stream {map $ssl_preread_server_name $name {mysql.t…
暂无图片
编程学习 ·

SpringBoot问题集锦

问题一: SpringBoot应用部署在外置Tomcat中没有启动,无任何反应 解决办法:启动类继承SpringBootServletInitializer并实现configure方法;@SpringBootApplication public class PaysApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicatio…
暂无图片
编程学习 ·

自定义注解,并通过注解进行数据库建表

1、自定义注解 1.1、这个注解用来指定表名 // An highlighted block package test.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;@Target(…
暂无图片
编程学习 ·

抓头,0xc00005错误看到一个比较多的解释 记录一下

说明文字:PAGE-FAULT-IN-NONPAGED-AREA 通常的原因:内存错误(数据不能使用分页文件交换到磁盘中). 解决方法:卸掉所有的新近安装的硬件. 运行由计算机制造商提供的所有系统诊断软件.尤其是内存检查. 检查是否正确安装了所有新硬件或软件,如果这是一次全新安装,请与硬件或软…
暂无图片
编程学习 ·

1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子, * 假如兔子都不死,问每个月的兔子对数为多少? * 分析: * 月份:1 2 3

package com.ujiuye.java;/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,* 小兔子长到第三个月后每个月又生一对兔子,* 假如兔子都不死,问每个月的兔子对数为多少?* 分析:* 月份:1 2 3 4 5 6 7 8 9...* 对数 :1 1 2 3 5 8 13 21... */ public class Dem…
暂无图片
编程学习 ·

Redis和Java客户端 Jedis

今日内容 1. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redisRedis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库1.1.什么是NOSQLNoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型…
暂无图片
编程学习 ·

Java 为什么Set元素是不重复的?是如何去重复的?

为什么Set元素是不重复的?是如何去重复的?对于有值特性的,Set集合可以直接判断进行去重复。例如数字1,2,本身就有值特性。 对于引用数据类型的类对象: set集合会让两两对象,先调用自己的hashCode()方法得到彼此的哈希值(所谓的内存地址) 然后比较两个对象的哈希值是否相…
暂无图片
编程学习 ·

Spring

1、概述 1.1、简介Spring:春天------>给软件行业带来了春天 2002,首次推出了Spring框架的雏形,interface21框架 Spring框架即以interface21框架为基础,重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版 Rod Johnson,Spring Framework创始人,著名作者。很…
暂无图片
编程学习 ·

struts2中的文件上传和文件下载

文件上传1)三个条件:表单有filepost提交enctype="multipart/form-data"2)在Action中接收文件内容File attach; (attach是file表单的name属性)String attachContentType; 文件类型String attachFileName; 文件名称细节:修改上传大小页面: <%@ page langua…
暂无图片
编程学习 ·

Blender导入FBX失败(附批量转换脚本)

Blender导入FBX失败 问题 由于Blender对于FBX的兼容性问题, 会导致某些版本导入FBX失败解决方法 使用新版本Blender导入有问题的FBX, 再导出FBX 批量转换脚本 示例, 在2.75导入FBX失败, 使用2.79版本(必须小于2.8版本)运行脚本, 即可批量转换FBX Blender运行Python脚本可参照博…
暂无图片
编程学习 ·

Docker学习笔记

docker学习笔记 环境Vmware 这个地方只是做下安装vmware备注:版本 15.5.6 build-16341506 linux 版本centos7.8 shell连接工具:finalShell刚安装时,突然发现shell工具连接不到虚拟机里,解决方案:使虚拟机使用NAT方式,然后在 centos7 /etc/sysconfig/network-scripts\if…
暂无图片
编程学习 ·

LeetCode题解(0929):独特的电子邮件地址(Python)

题目:原题链接(简单)解法 时间复杂度 空间复杂度 执行用时Ans 1 (Python) – O(NK)O(NK)O(NK) : K为Email平均长度 68ms (63.02%)Ans 2 (Python) O(NK)O(NK)O(NK) : K为Email平均长度 O(NK)O(NK)O(NK) : K为Email平均长度 72ms (48.14%)Ans 3 (Python)LeetCode的Python执行用…
暂无图片
编程学习 ·

ubuntu14.04的网络设置(NAT模式)

** ubuntu14.04的网络设置(NAT模式) ** 1.首先将虚拟机设置中的网络适配器调整为NAT模式。2.通过 :cd/etc/network命令进入对应目录,然后通过vi/vim修改该目录下的interfaces文件内容。3.通过下列命令来重启网卡 ifconfig eth0 down ifconfig eth0 up 4.通过 ping www.sou…