比赛 |
2024暑期C班集训4 |
评测结果 |
AAAAATTTTT |
题目名称 |
飘雪圣域 |
最终得分 |
50 |
用户昵称 |
123 |
运行时间 |
5.374 s |
代码语言 |
C++ |
内存使用 |
10.65 MiB |
提交时间 |
2024-07-04 10:36:24 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=400010;
int n,q,tot=0,flag[N],head[N],nxt[N],idx[N],ret=0,l,r;
void add(int x,int y)
{
idx[++tot]=y;
nxt[tot]=head[x];
head[x]=tot;
}
void dfs(int now)
{
for (int i=head[now];i;i=nxt[i])
{
int y=idx[i];
if (l<=y && y<=r && !flag[y])
{
flag[y]=1;
dfs(y);
}
}
}
int main() {
freopen("icekingdom.in","r",stdin);
freopen("icekingdom.out","w",stdout);
cin>>n>>q;
for (int i=1;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
while (q--)
{
memset(flag,0,sizeof(flag));
ret=0;
scanf("%d%d",&l,&r);
for (int i=l;i<=r;i++)
{
if (!flag[i])
{
ret++;
flag[i]=1;
dfs(i);
}
}
printf("%d\n",ret);
}
}