Submission #1312770

#TimeUsernameProblemLanguageResultExecution timeMemory
1312770nguyengiabach1201Sightseeing (NOI14_sightseeing)C++20
25 / 25
1543 ms172776 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define el '\n' #define FNAME "tinhcldd" #define ll long long #define int long long #define MOD (int)(1e9 + 7) #define INF (ll)(1e18 + 1) void setup() { ios_base::sync_with_stdio(0); cin.tie(0); if (fopen(FNAME ".inp", "r")) { freopen(FNAME ".inp", "r", stdin); freopen(FNAME ".out", "w", stdout); } return; } const int N = 5e5 + 5; int n, m, q; int p[N], ans[N], parent_dsu[N]; struct Edge { int u, v, w; }; bool cmp(const Edge &a, const Edge &b) { return a.w > b.w; } int find_set(int v) { if (v == parent_dsu[v]) return v; return parent_dsu[v] = find_set(parent_dsu[v]); } vector<pair<int, int>> mst_adj[N]; void dfs(int u, int p, int min_w) { ans[u] = min_w; for (auto &edge : mst_adj[u]) { int v = edge.first; int w = edge.second; if (v != p) { dfs(v, u, min(min_w, w)); } } } void solve() { cin >> n >> m >> q; vector<Edge> edges(m); for (int i = 0; i < m; ++i) { cin >> edges[i].u >> edges[i].v >> edges[i].w; } sort(edges.begin(), edges.end(), cmp); for (int i = 1; i <= n; ++i) { parent_dsu[i] = i; ans[i] = -INF; } int count = 0; for (int i = 0; i < m; ++i) { int u = find_set(edges[i].u); int v = find_set(edges[i].v); if (u != v) { parent_dsu[u] = v; mst_adj[edges[i].u].push_back({edges[i].v, edges[i].w}); mst_adj[edges[i].v].push_back({edges[i].u, edges[i].w}); count++; if (count == n - 1) break; } } for (int i = 1; i <= q; ++i) cin >> p[i]; dfs(1, 0, INF); for (int i = 1; i <= q; ++i) { if (ans[p[i]] == -INF) cout << -1 << el; else cout << ans[p[i]] << el; } } signed main() { setup(); solve(); return 0; }

Compilation message (stderr)

sightseeing.cpp: In function 'void setup()':
sightseeing.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen(FNAME ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
sightseeing.cpp:22:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |         freopen(FNAME ".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...