제출 #1304377

#제출 시각아이디문제언어결과실행 시간메모리
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...