a function defined on the set of edges. For each $e\in E$, the first component of $f(e)=\left(f_1(e),f_2(e)\right)$ represents the time for traveling over the edge $e$ while the second component $f_2(e)$ represents the weight of $e$.

A sequence of vertices $\pi=(v_1, v_2, \dots, v_k)$ is called a path if for each $i\in\{1,2,\dots, k-1\}$ there is an edge between $v_i$ and $v_{i+1}$, i.e. $(v_i,v_{i+1})\in E$. For each path $\pi = (v_1, \dots, v_k)$ in the graph we define $F_1(\pi)$ as the total time it takes to travel over the path $\pi$ and $F_2(\pi)$ the sum of the weights of all edges in $\pi$. $$\begin{aligned}
F_1(\pi)&=&\sum_{i=1}^{k-1} f_1\left(v_{i},v_{i+1}\right),\\
F_2(\pi)&=&\sum_{i=1}^{k-1} f_2\left(v_i,v_{i+1}\right).\end{aligned}$$

Let $A, B\subseteq V$ be two fixed disjoint subsets of $V$ and let $M\in\mathbb R_+$ be a fixed positive real number. Among all paths that connect sets $A$ and $B$ let us denote by $\hat\pi$ the one (or one of) for which $F_1(\pi)$ is minimal under the constraint $F_2(\pi)< M$. We will describe an algorithm whose output will be $F_1(\hat \pi)$ for a given graph $G$.

The algorithm belongs to a class of label correcting algorithms [@irnich_desaulniers; @mehlhorn_ziegelmann]. The construction of labels will aim to minimize the memory consumption on SIMD devices (such 