Submission #124604

#TimeUsernameProblemLanguageResultExecution timeMemory
124604MoNsTeR_CuBeSightseeing (NOI14_sightseeing)C++17
25 / 25
3171 ms100984 KiB
#include <bits/stdc++.h> using namespace std; const int INF = numeric_limits<int>::max(); vector< int > dist; vector< int > U; vector< int > taille; int getParents(int a){ if(U[a] == a) return a; else return U[a] = getParents(U[a]); } void Union(int a, int b){ a = getParents(a); b = getParents(b); if(taille[a] < taille[b]){ taille[a] += taille[b]; U[a] = U[b]; }else{ taille[b] += taille[a]; U[b] = U[a]; } } vector< vector< pair<int, int> > > Graph; vector< bool > visited; void dfs(int node, int cost){ dist[node] = cost; visited[node] = true; for(pair<int, int> p : Graph[node]){ if(visited[p.first]) continue; dfs(p.first, min(cost, p.second)); } } signed main(){ int n, m, q; scanf("%d%d%d", &n, &m, &q); Graph.resize(n+1); vector< tuple<int, int, int> > edges(m); for(int i = 0; i < m; i++){ int a, b, c; scanf("%d%d%d", &a, &b, &c); edges[i] = make_tuple(c,a,b); } taille.assign(n+1,1); dist.resize(n+1); U.resize(n+1); for(int i = 1; i <= n; i++){ U[i] = i; } sort(edges.begin(), edges.end(), greater< tuple<int, int, int> >()); for(int i = 0; i < m; i++){ int a = get<1>(edges[i]); int b = get<2>(edges[i]); int c = get<0>(edges[i]); if(getParents(a) == getParents(b)){ continue; } Union(a,b); Graph[a].push_back(make_pair(b,c)); Graph[b].push_back(make_pair(a,c)); } visited.assign(n+1, false); dfs(1,INF); for(int i = 0; i < q; i++){ int a; scanf("%d", &a); printf("%d\n", dist[a]); } }

Compilation message (stderr)

sightseeing.cpp: In function 'int main()':
sightseeing.cpp:46:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d", &n, &m, &q);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
sightseeing.cpp:55:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d", &a, &b, &c);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
sightseeing.cpp:89:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a);
   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...