# Routing Matrix

A routing matrix is a rectangular array arranged in rows and columns, where rows correspond to origins and columns to destinations. Entries in the matrix are are integers that describe either the travel times in seconds or distances in meters, depending on what was requested.

The first dimension of a matrix is always the number of rows N. The second dimension is the number of columns M. Such a matrix is called an M x N matrix and has this general form:

origins\destinations 0 1 ... M - 1
0 value 0 → 0 value 0 → 1 ... value 0 → M - 1
1 value 1 → 0 value 1 → 1 ... value 1 → M - 1
... ... ... ... ...
N - 1 value N - 1 → 0 value N - 1 → 1 ... value N - 1 → M - 1

If origins and destinations coincide, then the corresponding matrix is quadratic. By definition, for each entry on the diagonal the origin and destination coincide. However, the matrix is not symmetrical, meaning the entry for origin o to destination d is not the same as the entry for origin d to origin o, since a return route of a shortest route in most cases is a different one.

## Representation in a Response

In the API response, a routing matrix is represented as a one-dimensional array. Each entry at position k corresponds to an entry in the matrix at row i and column j by the formula:

k = M · i + j.

That is, the first M entries are the first row, the next M entries are the second row, and so on.

## Matrix of Errors

Sometimes a route between an origin and a destination cannot be calculated. This might happen because the destination is not reachable from the origin, or because either the origin or destination could not be matched to the map. In this case, if at least one such error happens, the service adds another matrix of integers to the response, with each entry in the matrix containing an error code. The code `0` means no error. For other possible values see the API Reference.