nzhtl1477-ただいま帰りました ( bfs )
nzhtl1477-ただいま帰りました
题目描述
珂学题意:
你是威廉!你要做黄油蛋糕给珂朵莉吃~!
68号岛有n个商店,有的商店直接有小路连接,小路的长度都为1
格里克告诉了你哪些地方可能有做黄油蛋糕的原料
但是那个人是个坑货,所以
他会告诉你一些商店,然后告诉你距离这些商店距离<= k的商店中都是可能有原料的
然后你要把这些可能的商店每个都去一遍
你想知道你要去多少个商店
由于你是勇者,所以有m次询问
简洁题意:
给你一个图,每次查询的时候给一堆特殊点以及一个数k,求图中有多少点距离至少一个特殊点距离不超过k
边是无向的
输入输出格式
输入格式:
第一行三个数表示n,m,q
之后m行每行两个数x,y表示这两个点之间连有一条边~
之后q次询问,每个询问先给你一个数a和一个数k
之后一行a个数,表示a个特殊点
输出格式:
q行,每行一个数表示答案
输入输出样例
输入样例#1: 复制
5 6 6
2 3
1 3
2 5
1 3
3 2
2 5
1 1
3
1 1
1
1 4
1
1 2
5
1 4
1
1 4
5
输出样例#1: 复制
3
2
4
3
4
4
说明
对于30%的数据,n,m,q <= 100,每次查询只给一个点
对于另外30%的数据,k=1
对于100%的数据,n,m,q <= 5000 , a的和<= 500000
解析
在线操作;将每一个点加入队列中间,类似修改了的spfa算法;
同时将几个点加入,就可以将剩下的点按照离他们最近的中心点的距离计算出来;
#include<bits/stdc++.h> using namespace std; #define ll long long #define rint register intinline int read(){int x=0,f=0;char ch=getchar();while(!isdigit(ch)) f=(ch==45),ch=getchar();while( isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return f?(~x+1):x; }#define man 5050struct edge{ int next,to;}e[man<<1]; int head[man<<1],num=0;inline void add(int from,int to){e[++num]=(edge){head[from],to};head[from]=num; }int n,m,q; int dis[man],vis[man],tot,k;int main(){memset(dis,63,sizeof(dis));n=read();m=read();q=read();for(rint i=1,x,y;i<=m;i++){x=read();y=read();add(x,y);add(y,x);}for(rint i=1,cnt;i<=q;i++){queue<int>q;tot=0;memset(vis,0,sizeof(vis));memset(dis,63,sizeof(dis));cnt=read();k=read();for(rint x,i=1;i<=cnt;i++){x=read();q.push(x);dis[x]=0;vis[x]=1;}do{int u=q.front();q.pop();for(rint i=head[u];i;i=e[i].next){int to=e[i].to;dis[to]=min(dis[to],dis[u]+1);if(!vis[to]) vis[to]=1,q.push(to);}}while(q.size());for(rint i=1;i<=n;i++)if(dis[i]<=k) tot++; printf("%d\n",tot);}return 0; }
转载于:https://www.cnblogs.com/Slager-Z/p/9889457.html
nzhtl1477-ただいま帰りました ( bfs )相关推荐
- HDU-1459.非常可乐(BFS )
这道题TLE了很多次,原来一直以为将数字化为最简可以让运算更快,但是去了简化之后才发现,真正耗时的就是化简....还和队友学到了用状态少直接数组模拟刚就能过... 本题大意:给出可乐的体积v1,给出两 ...
- HDU1548:A strange lift(Dijkstra或BFS)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:电梯每层有一个数,例如第n层有个数k, 那么这一层只能上k层或下k层,但是不能低于一层或高 ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- usaco Overfencing 穿越栅栏(BFS)
Overfencing 穿越栅栏 农夫 John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出 了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个" ...
- 数据结构--搜索BFS
文章目录 广度优先搜索 典型例题 广度优先搜索 广度优先搜索类似于树的层次遍历过程.它需要借助一个队列来实现.如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1.v2. ...
- 2017icpc沈阳 G Infinite Fraction Path BFS+剪枝
题意:给一个长度为n的字符串数组,你可以选定起点跳n次,从i点只能跳到(i*i+1)%n的位置,最后求一个最大字典序. 思路:要求最大的,即每一步都是最大,所以将最大的数都入队进行bfs跳下一步. 剪 ...
- HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路
题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...
- 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)
目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...
- hiho_1139_二分+bfs搜索
题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值. 题目链接:二分 最小化最大值,考虑采用二分搜索.对所有的边 ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...
最新文章
- 攻防世界Reverse第九题no-strings-attached
- MOSS2007的网站和工作区
- python数字编码_Python 编码为什么那么蛋疼?
- conda使用报错:ImportError:DLL load failed
- python-列表演练-根据学生id获取学生数据-获取学生数据中得分较高的前N条数据
- 调试器原理_调试器的工作原理
- CSS里各种垂直水平居中方式的基础用法
- android 模拟gps坐标,1020. Android GPS定位欺骗(模拟定位)的3类途径4种方式
- linux下查看分区信息和剩余空间大小
- [原]Jenkins(二十一) jenkins再出发Build periodically和Poll SCM
- visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
- TypeError this.getOptions is not a function 的解决
- linux下系统中的文件传输
- Base64加解密__完整版有解释
- Library Genesis
- Ebay跨境智星:全自动批量注册及下单软件
- MaterialEditText库使用详解
- 数字信号处理实验二:DFT的共轭对称性及应用
- 机器学习词汇翻译解释(2)
- python读取txt文件时去除换行符
热门文章
- oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法
- vs2012 与 win7 不兼容的问题
- C#中往数据库插入/更新时候关于NUll空值的处理
- 解析 Page.MaintainScrollPositionOnPostBack 属性
- [原创]flex 3 + .net开发flash Remoting一 --- 开发环境
- THYMELEAF 如何用TH:IF做条件判断
- ES6-3 let进阶、const、全部变量与顶层对象
- vim中跳到第一行和最后一行
- 简易版jQuery——mQuery
- Inline函数使用注意事项