比赛 |
2024暑期C班集训4 |
评测结果 |
AAAAATTTTT |
题目名称 |
飘雪圣域 |
最终得分 |
50 |
用户昵称 |
彭欣越 |
运行时间 |
5.320 s |
代码语言 |
C++ |
内存使用 |
11.84 MiB |
提交时间 |
2024-07-04 11:31:40 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=400010;
int n,q,mk[N],tot,l,r,res;
struct node {
int idx,hd,nxt;
}e[N];
void add (int u,int v) {
e[++tot].idx=v;
e[tot].nxt=e[u].hd;
e[u].hd=tot;
}
void dfs (int k) {
for (int i=e[k].hd;i;i=e[i].nxt) {
if (mk[e[i].idx]) continue;
if (e[i].idx>=l&&e[i].idx<=r) {
mk[e[i].idx]=1;
dfs(e[i].idx);
}
}
}
int main () {
freopen("icekingdom.in","r",stdin);
freopen("icekingdom.out","w",stdout);
scanf("%d%d",&n,&q);
for (int i=1;i<n;i++) {
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
while (q--) {
memset(mk,0,sizeof(mk));
l,r,res=0;
scanf("%d%d",&l,&r);
if (l==0||r==0) {
cout << 0 <<endl;
continue;
}
for (int i=l;i<=r;i++) {
if (mk[i]==0) {
res++;
mk[i]=1;
dfs(i);
}
}
cout << res <<endl;
}
return 0;
}