Submission #198556

#TimeUsernameProblemLanguageResultExecution timeMemory
198556alexandra_udristoiuCrocodile's Underground City (IOI11_crocodile)C++14
100 / 100
1226 ms61048 KiB
#include "crocodile.h" #include<iostream> #include<vector> #include<set> #define DIM 100005 #define f first #define s second using namespace std; static int viz[DIM]; static pair<int, int> d[DIM]; static vector< pair<int, int> > v[DIM]; static set< pair<int, int> > h; int travel_plan(int n, int m, int r[][2], int L[], int k, int p[]){ int i, nod, ii, vecin; set< pair<int, int> > :: iterator it; for(i = 1; i <= n; i++){ d[i].f = d[i].s = 1000000000; } for(i = 0; i < k; i++){ p[i]++; d[ p[i] ] = make_pair(0, 0); } for(i = 0; i < m; i++){ r[i][0]++; r[i][1]++; v[ r[i][0] ].push_back( make_pair(r[i][1], L[i]) ); v[ r[i][1] ].push_back( make_pair(r[i][0], L[i]) ); } d[0].s = 1000000001; for(i = 1; i <= n; i++){ h.insert( make_pair(d[i].s, i) ); } for(ii = 1; ii <= n; ii++){ it = h.begin(); nod = it->s; h.erase(it); viz[nod] = 1; for(i = 0; i < v[nod].size(); i++){ vecin = v[nod][i].f; if(d[vecin].f > d[nod].s + v[nod][i].s){ h.erase( make_pair(d[vecin].s, vecin) ); d[vecin].s = d[vecin].f; d[vecin].f = d[nod].s + v[nod][i].s; h.insert( make_pair(d[vecin].s, vecin) ); } else{ if(d[vecin].s > d[nod].s + v[nod][i].s){ h.erase( make_pair(d[vecin].s, vecin) ); d[vecin].s = d[nod].s + v[nod][i].s; h.insert( make_pair(d[vecin].s, vecin) ); } } } } return d[1].s; }

Compilation message (stderr)

crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:37:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(i = 0; i < v[nod].size(); i++){
                    ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...