Submission #981898

#TimeUsernameProblemLanguageResultExecution timeMemory
981898vjudge1Cyberland (APIO23_cyberland)C++17
44 / 100
32 ms9180 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; vector<pair<int,int>>ad[100005]; vector<int>rs,ar,vs(100005); int h; void dfs(int u){ if(u==h)return; if(ar[u]==0)rs.push_back(u); vs[u]=1; for(auto v:ad[u]) if(!vs[v.first]) dfs(v.first); } double solve(int N,int M,int K,int H,vector<int>x,vector<int>y,vector<int>c,vector<int>arr) { h=H; for(int i=0;i<N;i++)ad[i].clear(),vs[i]=0; for(int i=0;i<M;i++) ad[x[i]].push_back({y[i],c[i]}), ad[y[i]].push_back({x[i],c[i]}); rs.clear(); ar.clear(); rs.push_back(0); for(auto i:arr)ar.push_back(i); dfs(0); priority_queue<pair<double,int>>dj; for(auto i:rs)dj.push({0,i}); double R[N]; for(int i=0;i<N;i++)R[i]=1; while(!dj.empty()){ auto t=dj.top(); dj.pop(); if(R[t.second]!=1)continue; R[t.second]=t.first; for(auto j:ad[t.second])dj.push({t.first-j.second,j.first}); } return -R[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...