Submission #1304377

#TimeUsernameProblemLanguageResultExecution timeMemory
1304377BilAktauAlmansurDrivers (BOI24_drivers)C++20
0 / 100
1 ms560 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
const int N = 3e5 + 7, mod = 998244353;

int n, m, q, p[N], sz[N];
int get(int v) {
    if(p[v] == v)return v;
    else return p[v] = get(p[v]);
}
void unite(int x, int y) {
    x = get(x), y = get(y);
    if(sz[x] < sz[y])swap(x, y);
    sz[x] += sz[y];
    p[y] = x;
}
void solve() {
    cin>>n>>m>>q;
    for(int i = 1; i <= n; i++)sz[i] = 1, p[i] = i;
    vector<array<int, 3> > vec;
    for(int i = 1, x, y, w; i <= m; i++) {
        cin>>x>>y>>w;
        vec.push_back({w, x, y});
    }
    vector<array<int, 3> > qr;
    for(int i = 1, x, y, w; i <= q; i++) {
        cin>>x>>y>>w;
        qr.push_back({w, x, y});
    }
    sort(vec.begin(), vec.end());
    sort(qr.begin(), qr.end());
    int lx = 0;
    for(auto [w, x, y] : qr) {
        while(lx < vec.size()) {
            if(vec[lx][0] <= w) {
                unite(vec[lx][1], vec[lx][2]);
                lx ++;
            }else break;
        }
        if(get(x) == get(y))cout << "TAIP\n";
        else cout << "NE\n";
    }
}
signed main() {
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    int T = 1;
    cin>>T;
    while(T --)solve();
}
#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...