Submission #1231030

#TimeUsernameProblemLanguageResultExecution timeMemory
1231030ThommyDBDrivers (BOI24_drivers)C++20
10 / 100
202 ms2052 KiB
#include<bits/stdc++.h>

using namespace std;
#define int long long

const int INF = 1e16;

int n, m, u;
vector<vector<pair<int, int>>> adj;

vector<int> p, siz;

int find(int x){
    int xx=x;
    while(p[x]!=x)x=p[x];
    p[xx]=x;
    return x;
}

void unite(int a, int b){
    a=find(a);
    b=find(b);
    if(siz[a]> siz[b])swap(a, b);
    p[b]=a;
    siz[a]+=siz[b];
}

bool same(int a, int b){
    return find(a)==find(b);
}

signed main(){
    cin >> n >> m >> u;
    adj.resize(n);
    p.resize(n); siz.resize(n, 1);
    for(int i = 0; i < n; i++){
        p[i]=i;
    }

    int t;
    for(int i = 0; i < m; i++){
        int a, b;
        cin >> a >> b >> t; a--; b--;
        adj[a].push_back({b, t});
        adj[b].push_back({a, t});
        unite(a, b);
    }

    for(int o = 0; o < u; o++){
        int a, b, p;
        cin >> a >> b >> p; a--; b--;
        
        if(t <= p && same(a, b)){
            cout << "TAIP\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...
#Verdict Execution timeMemoryGrader output
Fetching results...