Submission #1271064

#TimeUsernameProblemLanguageResultExecution timeMemory
1271064abdelhakimCyberland (APIO23_cyberland)C++20
15 / 100
23 ms14020 KiB
#include "cyberland.h" #include <bits/stdc++.h> #define ll long long #define inf 1e18 #define dbg(x) cerr<<#x<<' '<<x<<endl; using namespace std; vector<bool> vis; vector<ll> zeros; vector<ll> tws; vector<vector<pair<ll,long double>>> adj; void dfs(ll node, vector<int>& arr) { vis[node]=true; if(arr[node]==0) zeros.push_back(node); else if(arr[node]==2) tws.push_back(node); for (auto &&e : adj[node]) { if(!vis[e.first]) { dfs(e.first,arr); } } } double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) { vis.assign(N,false); adj.assign(N,vector<pair<ll,long double>>()); zeros.clear(); tws.clear(); zeros.push_back(0); for (int i=0;i<M;i++) { adj[x[i]].push_back({y[i],c[i]}); adj[y[i]].push_back({x[i],c[i]}); } dfs(0,arr); if(!vis[H]) return -1; vector<long double> dist(N,inf); priority_queue<pair<long double,int>,vector<pair<long double,int>>,greater<pair<long double,int>>> pq; dist[H]=0; pq.push({0,H}); auto dij=[&]() { while(!pq.empty()) { ll nd=pq.top().second; pq.pop(); for (auto &&e : adj[nd]) { if(dist[e.first] > dist[nd]+e.second) { dist[e.first]=dist[nd]+e.second; pq.push({dist[e.first],e.first}); } } } }; dij(); // for (int i=0;i<K;i++) // { // for (auto &&e : tws) // { // long double val = dist[e]/2; // for (auto &&ei : adj[e]) // { // dist[ei.first]=min(dist[ei.first],val+ei.second); // pq.push({dist[ei.first],ei.first}); // } // } // dij(); // } long double ans=dist[0]; for (auto &&e : zeros) { ans=min(ans,dist[e]); } return ans; }
#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...