[ABC238E] Range Sums

原题链接

题解

把这里的数字看成间隔,不要看成点

假设已知能和 \(l\) 组成区间的端点集合 \(A\) 和以 \(r\) 组成区间的端点集合 \(B\),这时候加入一个以 \(l,r\) 为左右端点的区间,那么在加入区间 \(l,r\) 之后,这两个集合可以合并

code

#include<bits/stdc++.h>
using namespace std;
int fa[200005];
int finds(int now){return fa[now]==now?now:fa[now]=finds(fa[now]);}
int main()
{
    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;i++) fa[i]=i;
    while(q--)
    {
        int x,y;
        cin>>x>>y;
        fa[finds(x-1)]=finds(y);
    }
    if(finds(0)==finds(n)) puts("Yes");
    else puts("No");
    return 0;
}

posted @ 2024-06-03 13:05  纯粹的  阅读(22)  评论(0)    收藏  举报