Submission #1045842

#TimeUsernameProblemLanguageResultExecution timeMemory
1045842vjudge1Evacuation plan (IZhO18_plan)C++17
0 / 100
110 ms19284 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100011; vector<int> qr[N]; vector<pair<int, int>> g[N]; long long d[N], p[N], res[N]; int cur = 0; void dijkstra() { int k; cin >> k; fill(d + 1, d + N, LLONG_MAX); set<pair<long long, int>> st; for (int i = 0; i < k; i++) { int x; cin >> x; d[x] = 0; st.insert({0, x}); } while (!st.empty()) { int v = st.begin()->second; st.erase(st.begin()); for (auto [to, w] : g[v]) { if (d[to] > d[v] + w) { st.erase({d[to], to}); d[to] = d[v] + w; st.insert({d[to], to}); } } } } int get(int v) { if (p[v] == v) return v; return p[v] = get(p[v]); } void merge(int v, int u) { v = get(v); u = get(u); if (v == u) return; if (qr[v].size() < qr[u].size()) { swap(v, u); } for (int i : qr[u]) { if (find(qr[v].begin(), qr[v].end(), i) == qr[v].end()) { qr[v].push_back(i); } else { res[i] = cur; qr[v].erase(find(qr[v].begin(), qr[v].end(), i)); } } qr[u].clear(); } void process() { int n, m; cin >> n >> m; for (int i = 1; i <= m; i++) { int x, y, w; cin >> x >> y >> w; g[x].emplace_back(y, w); g[y].emplace_back(x, w); } dijkstra(); int q; cin >> q; for (int i = 1; i <= q; i++) { int s, t; cin >> s >> t; qr[s].push_back(i); qr[t].push_back(i); } vector<int> b(n); iota(b.begin(), b.end(), 1); sort(b.begin(), b.end(), [](int x, int y) { return d[x] > d[y]; }); iota(p + 1, p + n + 1, 1); for (int i : b) { cur = d[i]; for (auto [to, w] : g[i]) { if (d[to] >= d[i]) { merge(i, to); } } } for (int i = 1; i <= q; i++) { cout << res[i] << '\n'; } } main() { ios_base::sync_with_stdio(false); cin.tie(0); #define task "phcbaka" if (fopen(task ".inp", "r")) // Kiểm tra xem có đọc vào từ file không { freopen(task ".inp", "r", stdin); freopen(task ".out", "w", stdout); } process(); }

Compilation message (stderr)

plan.cpp:111:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  111 | main()
      | ^~~~
plan.cpp: In function 'int main()':
plan.cpp:118:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  118 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
plan.cpp:119:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  119 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...