Submission #814459

#TimeUsernameProblemLanguageResultExecution timeMemory
814459HanksburgerCyberland (APIO23_cyberland)C++17
21 / 100
1426 ms2097152 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; long long dist[100005], final[100005], ok[100005], h; vector<pair<long long, long long> > adj[100005]; priority_queue<pair<long long, long long> > pq; void dfs(long long u, long long p) { ok[u]=1; for (long long i=0; i<adj[u].size(); i++) { long long v=adj[u][i].first; if (v==p || v==h) continue; dfs(v, u); } } double solve(int n, int m, int k, int hh, vector<int> x, vector<int> y, vector<int> c, vector<int> a) { h=hh; for (long long i=0; i<n; i++) adj[i].clear(); for (long long i=0; i<m; i++) { adj[x[i]].push_back({y[i], c[i]}); adj[y[i]].push_back({x[i], c[i]}); } for (long long i=0; i<n; i++) ok[i]=0; dfs(0, 0); for (long long i=0; i<n; i++) { dist[i]=1e18; final[i]=0; } dist[0]=0; pq.push({0, 0}); for (long long i=1; i<n; i++) { if (!a[i] && ok[i]) { dist[i]=0; pq.push({0, i}); } } while (!pq.empty()) { long long u=pq.top().second; pq.pop(); if (final[u]) continue; final[u]=1; for (long long i=0; i<adj[u].size(); i++) { long long v=adj[u][i].first, w=adj[u][i].second; if (dist[u]+w<dist[v]) { dist[v]=dist[u]+w; pq.push({-dist[v], v}); } } } if (dist[h]<5e17) return dist[h]; else return -1; }

Compilation message (stderr)

cyberland.cpp: In function 'void dfs(long long int, long long int)':
cyberland.cpp:10:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     for (long long i=0; i<adj[u].size(); i++)
      |                         ~^~~~~~~~~~~~~~
cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:53:30: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         for (long long i=0; i<adj[u].size(); i++)
      |                             ~^~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...