Submission #1159857

#TimeUsernameProblemLanguageResultExecution timeMemory
1159857Gr1senDrivers (BOI24_drivers)C++20
100 / 100
173 ms23208 KiB
#include<iostream> #include<vector> #include<algorithm> #include<iomanip> #include<queue> using namespace std; #define vi vector<int> #define vvi vector<vi> #define pi pair<int, int> #define ppi pair<pi, pi> #define vp vector<pi> #define vvp vector<vp> #define MP make_pair #define pq priority_queue<ppi> vvp Adj; vi P; pq Q; vp U; int find(int a) { //cerr << "find " << a << endl; return P[a] == -1 ? a : P[a] = find(P[a]); } void uninon(int a, int b) { a = find(a); b = find(b); if (a == b) return; P[a] = b; } int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, u; cin >> n >> m >> u; Adj = vvp(n); U = vp(u); P = vi(n, -1); vi Ans(u, -1); for (int i = 0; i < m; i++) { int x, y, t; cin >> x >> y >> t; x--; y--; Adj[x].push_back({t, y}); Adj[y].push_back({t, x}); Q.push({{-t, 1}, {x, y}}); } for (int i = 0; i < u; i++) { int a, b, p; cin >> a >> b >> p; a--; b--; Q.push({{-p, 0}, {i, -1}}); U[i] = {a, b}; } while (!Q.empty()) { int c = Q.top().first.first, t = Q.top().first.second; //cerr << c << " " << t << endl; if (t == 1) { uninon(Q.top().second.first, Q.top().second.second); Q.pop(); continue; } int id = Q.top().second.first; //cerr << id << endl; Ans[id] = find(U[id].first) == find(U[id].second); Q.pop(); } for (auto i : Ans) { cout << (i?"TAIP":"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...