제출 #703998

#제출 시각아이디문제언어결과실행 시간메모리
703998PacybwoahKutije (COCI21_kutije)C++14
70 / 70
147 ms9516 KiB
#include<iostream>
#include<vector>
#define ll long long
using namespace std;
vector<int> dsu,sz;
int query(int x){
    if(x==dsu[x]) return x;
    int tmp=query(dsu[x]);
    dsu[x]=tmp;
    return tmp;
}
void unite(int a,int b){
    a=query(a);
    b=query(b);
    if(a==b) return;
    if(sz[a]>sz[b]){
        dsu[b]=a;
        sz[a]+=sz[b];
    }
    else{
        dsu[a]=b;
        sz[b]+=sz[a];
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m,q;
    cin>>n>>m>>q;
    dsu.resize(n+1);
    sz.resize(n+1);
    for(int i=1;i<=n;i++){
        dsu[i]=i;
        sz[i]=1;
    }
    int tmpp;
    for(int i=0;i<m;i++){
        for(int j=1;j<=n;j++){
            cin>>tmpp;
            unite(tmpp,j);
        }
    }
    int a,b;
    for(int i=0;i<q;i++){
        cin>>a>>b;
        if(query(a)==query(b)) cout<<"DA\n";
        else cout<<"NE\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...