Submission #1143598

#TimeUsernameProblemLanguageResultExecution timeMemory
11435980pt1mus23Kutije (COCI21_kutije)C++20
70 / 70
108 ms1864 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define pii pair<int,int>
#define endl '\n' 
#define all(x) x.begin(),x.end()

const int mod = 998244353;
const int inf = LLONG_MAX;
const int LG  = 23;
const int sze = 2e5+23;

struct DSU{
    vector<int> parent;
    vector<int> sz;
    DSU(int n){
        parent.resize(n+23,0);
        sz.resize(n+23,1);
        iota(all(parent),0);
    }
    int root(int node){
        if(parent[node]==node) return node;
        return parent[node]=root(parent[node]);
    }
    void unite(int a,int b){
        int x = root(a);
        int y = root(b);
        if(x!=y){
            if(sz[x]<sz[y]){
                swap(x,y);
            }
            parent[y]=x;
            sz[x]+=sz[y];
        }
    }
};

void fast(){
    int n,m,q;
    cin>>n>>m>>q;
    DSU lan(n+23+23);
    for(int j=0;j<m;j++){
        for(int i=1;i<=n;i++){
            int x;cin>>x;
            lan.unite(x,i);
        }
    }
    while(q--){
        int x,y;
        cin>>x>>y;
        cout<<(lan.root(x)==lan.root(y) ? "DA":"NE")<<endl;
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int tt =1;

    // cin>>tt;
    while(tt--){
        fast();
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...