Submission #755882

#TimeUsernameProblemLanguageResultExecution timeMemory
755882HaciyevAlik사이버랜드 (APIO23_cyberland)C++17
15 / 100
1590 ms8708 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define ff first #define ss second const int mx=1e5+5; vector<pair<int,int>> g[mx]; int used[mx]; long dis[mx]; set<int> s; void dfs(int u,int fin,vector<int>& arr) { used[u]=1; if(!arr[u]) { s.insert(u); } for(int i=0;i<int(g[u].size());++i){ int v=g[u][i].ff; if(!used[v]&&v!=fin) { dfs(v,fin,arr); } } } double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) { for(int i=0;i<mx;++i) g[i].clear(); memset(used,0,sizeof(used)); for(int i=0;i<M;++i) { g[x[i]].pb({y[i],c[i]}); g[y[i]].pb({x[i],c[i]}); } s.clear(); dfs(0,H,arr); memset(used,0,sizeof(used)); set<int>::iterator it; priority_queue<pair<long,int>> pq; for(it=s.begin();it!=s.end();++it) { pq.push({0,*it}); } for(int i=0;i<mx;++i) dis[i]=1e10; dis[0]=0; pq.push({0,0}); while(!pq.empty()) { int u=pq.top().ss; pq.pop(); if(used[u]) continue; used[u]=1; for(int i=0;i<int(g[u].size());++i){ int v=g[u][i].ff,w=g[u][i].ss; 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...