您的位置:首页 > 其它

[noip2005pj] 校门外的树

2016-11-12 14:20 155 查看
题目链接

题解:非常奇怪的用并查集维护区间的做法

#include <iostream>
#include <cstdio>
using namespace std;
int r[100000],f[100000];
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
void uniom(int u,int p){
int x=find(u),y=find(p);
if(x==y) return ;
f[x]=y;
}
int main()
{
int n,m,sum=0,a,b;
cin>>n>>m;
for(int i=0;i<=n;i++)
f[i]=i;
while(m--)
{
cin>>a>>b;
for(int i=a;i<=b;i++)
uniom(i,i+1);
}
for(int i=0;i<=n;i++)
if(i==f[i]) sum++;
cout<<sum<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: