#ifndef COLORIZER_H
#define COLORIZER_H

/*
This implementation is based on the paper
Robert Lukotka, Jakub Tetek: 3-edge-coloring algorithm.

For more details see the related paper.
*/
#include "colouring_bit_array.hpp"
#include <vector>
#include <utility>


bool is_colorable(std::vector<std::pair<int, int>> decomposition);
/*
We assume that the graph vertices are labeled by integers. The input encodes 
the decomposition pair (as defined in the paper). Assume that 
the decomposition pair is ((X_1, \dots, X_m), f). 
Then decomposition.size() == m and for each i in {1, ..., m} 
decomposition[i] contains labels of the two verices incident with f(i).

The graph has to be cubic, that is, each label that appears in decomposition
has to appear exactly three times.
*/

#endif
