#pragma once #include class undirectedGraph { private: int _numVertices; std::vector _verticesA; std::vector _verticesB; std::vector _edgeWeights; std::vector> _edges; public: undirectedGraph(int numVertices, std::vector verticesA, std::vector verticesB, std::vector edgeWeights) { _numVertices = numVertices; _verticesA = verticesA; _verticesB = verticesB; _edgeWeights = edgeWeights; _edges.resize(numVertices); int _edgesLength = _edges.size(); int _edgeWeightsLength = _edgeWeights.size(); for (int i = 0; i < _edgeWeightsLength; i++) { _edges[_verticesA[i]].push_back(_verticesB[i]); if (_verticesA[i] != _verticesB[i]) _edges[_verticesB[i]].push_back(_verticesA[i]); } } void quicksortByEdgeWeight(); int getNumVertices(); int getNumEdges(); int getFirstVertexAtIndex(int index); int getSecondVertexAtIndex(int index); double getEdgeWeightAtIndex(int index); std::vector& getEdgeListForVertex(int vertex); private: int selectPivotIndex(int startIndex, int endIndex); int partition(int startIndex, int endIndex, int pivotIndex); void swapEdges(int indexOne, int indexTwo); };