Submission #242760

#TimeUsernameProblemLanguageResultExecution timeMemory
242760SamAndSightseeing (NOI14_sightseeing)C++17
15 / 25
3581 ms220360 KiB
#include <bits/stdc++.h> using namespace std; #define m_p make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define fi first #define se second typedef long long ll; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); mt19937 rnf(2106); const int N = 500005, M = 100005, K = 5000006; int ka() { int x = 0; while (1) { char y = getchar(); if ('0' <= y && y <= '9') x = (x * 10) + (y - '0'); else return x; } } int n, m; vector<int> a[N]; pair<pair<int, int>, int> b[K]; bool c[N]; int ans[N]; int d[N]; queue<int> q[M]; void prr() { for (int x = 1; x <= n; ++x) d[x] = -1; int j = M - 1; q[M - 1].push(1); while (1) { int x; do { if (j == -1) return; if (q[j].empty()) { --j; continue; } x = q[j].front(); q[j].pop(); } while (c[x]); c[x] = true; ans[x] = j; for (int i = 0; i < a[x].size(); ++i) { int h; if (b[a[x][i]].fi.fi == x) h = b[a[x][i]].fi.se; else h = b[a[x][i]].fi.fi; int u = min(b[a[x][i]].se, j); if (!c[h] && u > d[h]) { d[h] = u; q[u].push(h); } } } } void solv() { int qq; n = ka(); m = ka(); qq = ka(); for (int i = 0; i < m; ++i) { int x, y, z; x = ka(); y = ka(); z = ka(); a[x].push_back(i); a[y].push_back(i); b[i] = m_p(m_p(x, y), z); } prr(); while (qq--) { int x; x = ka(); printf("%d\n", ans[x]); } } int main() { #ifdef SOMETHING freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); #endif // SOMETHING //ios_base::sync_with_stdio(false), cin.tie(0); solv(); return 0; } //while ((double)clock() / CLOCKS_PER_SEC <= 0.9){}

Compilation message (stderr)

sightseeing.cpp: In function 'void prr()':
sightseeing.cpp:59:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int i = 0; i < a[x].size(); ++i)
                         ~~^~~~~~~~~~~~~
sightseeing.cpp:56:21: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
         } while (c[x]);
                  ~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...