Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Graph
- {
- public:
- /*
- Sets the Vectors to number Vertexes
- Intializes Vertex object for each vertex.
- */
- Graph(int& numberofvectors)
- {
- numvectors = numberofvectors;
- list_Vertex.resize(numvectors);
- indegrees.resize(numvectors);
- for(auto& i : list_Vertex)
- {
- i = new Vertex;
- }
- for(int i = 0; i<numvectors; i++)
- {
- list_Vertex[i]->Vertexnumber = i+1;
- }
- }
- /*
- inputs adjacent edge to the adjacency list and sets indegress for each
- adjacent vertex.
- */
- void AddEdge(int& vertex1, int& vertex2, double& weight)
- {
- Vertex::Adjacency a;
- a.AdjacencyNumber = vertex2;
- a.weight = weight;
- list_Vertex[vertex1-1]->Aj.push_back(a);
- indegrees[vertex2-1]+=1;
- }
- /*
- Returns the weight of Vertex if it is connected.
- If not connected -1 will indicate that its not.
- */
- double CheckConnection(int vertex1, int vertex2)
- {
- Vertex* check = list_Vertex[vertex1-1];
- const auto& checklist = check->Aj;
- for(auto i = checklist.begin(); i!= checklist.end();i++)
- {
- if(i->AdjacencyNumber == vertex2)
- {
- return i->weight/1.0;
- }
- }
- return -1;
- }
- private:
- struct Vertex//nested struct to track adjacency vertex
- {
- //Adjacency vertex to see the neighboring vertexes.
- struct Adjacency
- {
- int AdjacencyNumber;
- double weight;
- Adjacency() : AdjacencyNumber{}, weight{} {}
- };
- list<Adjacency> Aj;
- int Vertexnumber;
- Vertex() : Aj{}, Vertexnumber {} {}
- };
- int numvectors;
- vector<int> indegrees;
- vector<Vertex*> list_Vertex;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement