【洛谷八连测R7】nzhtl1477-我回来了

【洛谷八连测R7】nzhtl1477-我回来了

题目描述

68号岛有n个商店,有的商店直接有小路连接,小路的长度都为1,格里克告诉了你哪些地方可能有做黄油蛋糕的原料。

但是那个人是个坑货,所以他会告诉你一些商店,然后告诉你距离这些商店距离 <= k的商店中都是可能有原料的。

然后你要把这些可能的商店每个都去一遍,你想知道你要去多少个商店。

由于你是勇者,所以有m次询问

简洁题意:

给你一个图,每次查询的时候给一堆特殊点以及一个数k,求图中有多少点距离至少一个特殊点距离不超过k,边是无向的。

输入输出格式

输入格式:

第一行三个数表示n,m,q

之后m行每行两个数x,y表示这两个点之间连有一条边~

之后q次询问,每个询问先给你一个数a和一个数k

之后一行a个数,表示a个特殊点

输出格式:

q行,每行一个数表示答案

说明

对于30%的数据,n,m,q <= 100,每次查询只给一个点

对于另外30%的数据,k=1

对于100%的数据,n,m,q <= 5000 , a的和 <= 500000

分析

相邻点之间的距离是1,直接用bfs就行了。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=5010;
inline int read(){
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}
int n,m,q,tot;
int head[N],dis[N];
bool vis[N];
queue<int>Q;
struct node{
    int next,to;
}e[N*2];
inline void ins(int from,int to){
    e[++tot].next=head[from];
    e[tot].to=to;
    head[from]=tot;
}
int main(){
    n=read();m=read();q=read();
    for(int i=1;i<=m;++i){
        int x=read(),y=read();
        ins(x,y); ins(y,x);
    }
    for(int i=1;i<=q;++i){
        int a=read(),k=read(),cnt=0;
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=a;++i){
            int x=read();
            if(!vis[x]){
                Q.push(x); ++cnt;
                vis[x]=true; dis[x]=0;
            }
        }
        do{
            int u=Q.front();Q.pop();
            for(int i=head[u];i;i=e[i].next)
            if(!vis[e[i].to]){
                dis[e[i].to]=dis[u]+1;
                if(dis[e[i].to]<=k) ++cnt;
                if(dis[e[i].to]<k) Q.push(e[i].to);
                vis[e[i].to]=true;
            }
        }while(!Q.empty());
        printf("%d\n",cnt);
    }
        return 0;
}
    
时间: 2024-11-08 21:43:01

【洛谷八连测R7】nzhtl1477-我回来了的相关文章

洛谷八连测2017R7-nzhtl1477-いずれその陽は落ちるとしても

题目描述 珂朵莉有一个序列 在威廉不在的时候,珂朵莉没事情干 所以她数出了这个序列所有子区间的逆序对个数和 然而珂朵莉开始丧失记忆了,于是忘掉了这个根本没啥意义的值 所以给你一个序列,求出所有子区间的逆序对个数和 子区间: 一个序列有n*(n+1)/2个子区间 即所有满足1 <= l <= n , 1 <= r <= n , l <= r的[l , r]都是一个子区间 闭区间... 逆序对: 在一个区间中,如果有 i < j , a[i] > a[j]则( i ,

浴谷八连测R6题解(收获颇丰.jpg)

这场的题都让我收获颇丰啊QWQ 感谢van♂老师 T1 喵喵喵!当时以为经典题只能那么做, 思维定势了... 因为DP本质是通过一些条件和答案互相递推的一个过程, 实际上就是把条件和答案分配在DP的状态和结果中, 所以当条件数值非常大, 而答案比较小的时候, 完全可以将答案放在DP数组的状态中,用来递推条件, 如果这个条件合法, 那么表明这个答案是可行的. 在这题里面, 答案不会超过b串的长度, 而a串的长度可以非常长, 所以可以设f[i][j]为b串中前i个字符, 匹配了j为在a串中的最前位置

洛谷P1244 青蛙过河 DP/思路

又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的人生经验理解能力. 题目想必已知,我就提几点可能会搞错的点吧. 1.题目说了青蛙可以:A→B(表示可以从A跳到B,下同),A→C,A→D,C→B,D→B,D→C,C→D:但却不能跳到A,B上再跳回来.所以不可以脑补成汉内塔那种跳法. 2.青蛙只能跳到比它大1号的青蛙上面,而不是比他大的青蛙就行.所以不可以脑补

洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划

洛谷P2904 [USACO08MAR]跨河River Crossing动态规划 区间DP f[ i ] 表示 将 i 头牛 运了过去,然后John 又返回所需要的最少时间 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <cstdlib> 5 #include <string> 6 #include <algorithm> 7 #inclu

洛谷 P1599 结算日

洛谷 P1599 结算日 题目描述 "不放债不借债",贝西多么希望自己可以遵循这个忠告.她已经和她的N(1 <= N <= 100,000)个朋友有了债务关系,或者借债了,或者放债了.她的N个朋友依次标号为1..N. 结算日终于来临了.她知道,朋友欠她的钱比她欠朋友的钱多.她的朋友们分布在一条直线上,第i头奶牛站的位置距离谷仓i米.贝西打算沿着这条直线行走,从欠她钱的奶牛手里收钱回来,并且还钱给她欠钱的奶牛. 当她沿直线移动的时候,她可以要求任何欠她钱的奶牛还全部的钱.当她

洛谷P3348 [ZJOI2016]大森林(LCT,虚点,树上差分)

洛谷题目传送门 思路分析 最简单粗暴的想法,肯定是大力LCT,每个树都来一遍link之类的操作啦(T飞就不说了) 考虑如何优化算法.如果没有1操作,肯定每个树都长一样.有了1操作,就来仔细分析一下对不同树的影响. 假设有一个2操作形如\(l\ r\ x\),那么从微观来看差异,我们只关注第l-1棵树和第l棵树.再假设以后都没有了1操作,那么我们可以认为,第l棵树是第l-1棵树把这个1操作以后嫁接在原来生长节点上的所有节点(以及所有子树)全部转而嫁接到x上.再看第r棵树和第r+1棵树,是不是可以认

[Noi2016]区间 BZOJ4653 洛谷P1712 Loj#2086

额... 首先,看到这道题,第一想法就是二分答案+线段树... 兴高采烈的认为我一定能AC,之后发现n是500000... nlog^2=80%,亲测可过... 由于答案是求满足题意的最大长度-最小长度最小,那么我们可以考虑将区间按长度排序 之后,因为我们是需要最大最小,所以,我们必定选择在排完序的区间上取连续的一段是最优情况(起码不会比别的差) 因此,考虑双指针扫一下就可以了... 是不是很水? 由于懒得写离散化,一开始写的动态开点线段树,我*****什么鬼?mle?!256mb开不下! lo

洛谷 P2709 BZOJ 3781 小B的询问

题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小B请你帮助他回答询问. 输入输出格式 输入格式: 第一行,三个整数N.M.K. 第二行,N个整数,表示小B的序列. 接下来的M行,每行两个整数L.R. 输出格式: M行,每行一个整数,其中第i行的整数表示第i个询问的答案. 输入输出样例 输入样例#1: 6 4 3 1 3 2 1 1 3

洛谷1231 教辅的组成

洛谷1231 教辅的组成 https://www.luogu.org/problem/show?pid=1231 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册.已知一个完整的书册均应该包含且仅包含一本书.一本练习册和一份答案,然而现在全都乱做了一团.许多书上面的字迹都已经模糊了,然而HansBug还是可