std::vector<size_t> CPathFinder::findPath(CAlgorithm alhorithm) const
{
    std::vector<size_t> path;
    path.reserve(pointsAmount);
    switch (alhorithm)
    {
        case kruskalMST:
        {
            CGraph minimumSpanningTree = kruskalFindMST();
            path = minimumSpanningTree.rebuildWay();
            break;
        }
        case bruteForce:
        {
            std::vector<bool> visited(pointsAmount, false);
            std::vector<size_t> way;
            way.reserve(pointsAmount);
            double bestLength = -1;
            double currentLength = 0;
            bruteForceSearch(visited, way, currentLength, path, bestLength);
            break;
        }
        default:
            assert(false);
    }
    std::cout << "Length is " << checkPath(path) << '\n';
    return path;
}