Submission #754459

#TimeUsernameProblemLanguageResultExecution timeMemory
754459HaciyevAlikCyberland (APIO23_cyberland)C++17
0 / 100
3070 ms10112 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int mx=1e5+5; vector<pair<ll,ll>> g[mx]; queue<ll> q; ll used[mx],dis[mx]; void dfs(int u,int H,vector<int> &arr) { used[u]=1; if(u==H) {return;} if(arr[u]==0) { q.push(u); } for(int i=0;i<(int)g[u].size();++i) { pair<int,int> cur=g[u][i]; if(!used[cur.first]) { dfs(cur.first,H,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) { for(int i=0;i<M;++i) { int u=x[i],v=y[i],w=c[i]; g[u].push_back({v,w}); g[v].push_back({u,w}); } priority_queue<pair<ll,ll>> pq; dfs(0,H,arr); for(int i=0;i<mx;++i) { dis[i]=1000000001; } while(!q.empty()) { pq.push({0,q.front()}); dis[q.front()]=0; q.pop(); } memset(used,0,sizeof(used)); while(!pq.empty()) { ll u=pq.top().second; if(used[u]) continue; used[u]=1; for(int i=0;i<(int)g[u].size();++i) { ll v=g[u][i].first,w=g[u][i].second; if(dis[u]+w<dis[v]) { dis[v]=dis[u]+w; pq.push({-dis[v],v}); } } } if(!used[H]) { return -1; } else { return dis[H]; } }
#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...