文章

82

粉丝

343

获赞

27

访问

659.6k

头像
并查集模板
P1846 天津大学机试
发布于2021年3月20日 21:34
阅读数 8.0k

#include <iostream>
#include <algorithm>
#include <stack>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <math.h>
using namespace std;

const int maxn=1005;
int f[maxn];
int vis[maxn];
void init(int n){
    for(int i=1;i<=n;i++){
        f[i]=i;
    }
}
int find(int x){
    if(x==f[x]) return x;
    return f[x]=find(f[x]);
}
void merge(int x,int y){
    x=find(x);
    y=find(y);
    if(x!=y){
        f[x]=y;
    }
}

int n,m;
int main(){
    while(scanf("%d %d",&n,&m)!=EOF){
        init(n);
        for(int i=0;i<m;i++){
            int x,y;
            cin>>x>>y;
            merge(x,y);
  &n...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发