没有用到并查集(还没接触)我这样写有啥逻辑错误呀
  • 板块P1551 亲戚
  • 楼主freeellen
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/7 21:50
  • 上次更新2023/11/4 11:41:05
查看原帖
没有用到并查集(还没接触)我这样写有啥逻辑错误呀
490426
freeellen楼主2021/8/7 21:50
#include <iostream>
#include<string>
#include<vector>
#include<cstring>
#include<cmath>
#include<queue>
#include<iomanip>
using namespace std;

int main(){
    int n,m,p;
    cin>>n>>m>>p;
    int a[5001];
    memset(a,0,sizeof(a));
    int x,y;
    int c=1;
    while(m--){
        cin>>x>>y;
        if((a[x]!=0&&a[y]==0)||(a[x]==0&&a[y]!=0)){
            if(a[x]!=0) a[y]=a[x];
            else if(a[y]!=0) a[x]=a[y];
            continue;
        }
        else if(a[x]==0&&a[y]==0){
            a[x]=c;a[y]=c;
            c++;
            continue;
        }
        else{
            int d=a[x];
            for(int i=1;i<=n;i++){
                if(a[i]==d) a[i]=a[y];
            }
        }
    }
    while(p--){
        cin>>x>>y;
        if(a[x]==a[y]) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
}

2021/8/7 21:50
加载中...