Submission #400626

#TimeUsernameProblemLanguageResultExecution timeMemory
400626MOUF_MAHMALATCrocodile's Underground City (IOI11_crocodile)C++14
100 / 100
886 ms60132 KiB
#include "crocodile.h" #include<bits/stdc++.h> #define F first #define S second using namespace std; typedef int ll; //ll N1,M1,K1,R1[1000000][2],L1[1000000],P1[100000],solution; ll x,y,id; set<pair<ll,ll> >s; pair<ll,ll>d[100000],p; bool b[1000000]; vector<vector<pair<ll,ll> > >v; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { v.resize(N); for(ll i=0; i<M; i++) { x=R[i][0],y=R[i][1]; v[x].push_back({y,L[i]}); v[y].push_back({x,L[i]}); } for(ll i=0; i<N; i++) d[i]= {2e9,2e9}; for(ll i=0; i<K; i++) { d[P[i]]= {0,0}; s.insert({0,P[i]}); } while(s.size()) { p=*s.begin(); s.erase(s.begin()); x=p.second,y=p.first; for(auto z:v[x]) { id=z.F; if(d[id].F > y + z.S) { s.erase({d[id].S,id}); d[id].S = d[id].F; d[id].F = y + z.S; s.insert({d[id].S,id}); } else if(d[id].S > y+z.S) { s.erase({d[id].S,id}); d[id].S = y + z.S; s.insert({d[id].S,id}); } } } return d[0].S; } /*int main() { cin>>N1>>M1>>K1; for(ll i=0; i<M1; i++) cin>>R1[i][0]>>R1[i][1]>>L1[i]; for(ll i=0; i<K1; i++) cin>>P1[i]; cin>>solution; cout<<travel_plan(N1,M1,R1,L1,K1,P1); }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...