Submission #386591

#TimeUsernameProblemLanguageResultExecution timeMemory
386591KephaCrocodile's Underground City (IOI11_crocodile)C++11
100 / 100
809 ms64480 KiB
#include "crocodile.h" #include<algorithm> #include<vector> using namespace std; vector<int>E[100100], Len[101000]; bool chk[101000]; struct HP{ int d, num; bool operator<(const HP &p)const{ return d>p.d; } }Heap[8000100]; int D[100100][2], top; void Add(int a, int b){ if (D[a][1] <= b)return; if (D[a][0] > b){ D[a][1] = D[a][0]; D[a][0] = b; } else if (D[a][1] > b)D[a][1] = b; Heap[top].d = b; Heap[top].num = a; top++; push_heap(Heap, Heap + top); } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { int i, x; HP t; for (i = 0; i < M; i++){ E[R[i][0]].push_back(R[i][1]); E[R[i][1]].push_back(R[i][0]); Len[R[i][0]].push_back(L[i]); Len[R[i][1]].push_back(L[i]); } for (i = 0; i < N; i++)D[i][0] = D[i][1] = 2100000000; top = 0; for (i = 0; i < K; i++){ D[P[i]][0] = 0; Add(P[i], 0); } while (1){ while (top){ t = Heap[0]; if (D[t.num][1] == t.d && !chk[t.num])break; pop_heap(Heap, Heap + top); top--; } chk[t.num] = true; if (t.num == 0)break; pop_heap(Heap, Heap + top); top--; for (i = 0; i < E[t.num].size(); i++){ Add(E[t.num][i], t.d + Len[t.num][i]); } } return D[0][1]; }

Compilation message (stderr)

crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:52:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |   for (i = 0; i < E[t.num].size(); i++){
      |               ~~^~~~~~~~~~~~~~~~~
crocodile.cpp:27:9: warning: unused variable 'x' [-Wunused-variable]
   27 |  int i, x;
      |         ^
crocodile.cpp:49:3: warning: 't.HP::num' may be used uninitialized in this function [-Wmaybe-uninitialized]
   49 |   if (t.num == 0)break;
      |   ^~
crocodile.cpp:53:7: warning: 't.HP::d' may be used uninitialized in this function [-Wmaybe-uninitialized]
   53 |    Add(E[t.num][i], t.d + Len[t.num][i]);
      |    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...