比赛 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;
}