Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. class Graph
  2. {
  3. public:
  4. /*
  5. Sets the Vectors to number Vertexes
  6. Intializes Vertex object for each vertex.
  7. */
  8. Graph(int& numberofvectors)
  9. {
  10. numvectors = numberofvectors;
  11. list_Vertex.resize(numvectors);
  12. indegrees.resize(numvectors);
  13.  
  14. for(auto& i : list_Vertex)
  15. {
  16. i = new Vertex;
  17. }
  18.  
  19. for(int i = 0; i<numvectors; i++)
  20. {
  21. list_Vertex[i]->Vertexnumber = i+1;
  22. }
  23.  
  24. }
  25. /*
  26. inputs adjacent edge to the adjacency list and sets indegress for each
  27. adjacent vertex.
  28. */
  29. void AddEdge(int& vertex1, int& vertex2, double& weight)
  30. {
  31. Vertex::Adjacency a;
  32. a.AdjacencyNumber = vertex2;
  33. a.weight = weight;
  34.  
  35. list_Vertex[vertex1-1]->Aj.push_back(a);
  36.  
  37. indegrees[vertex2-1]+=1;
  38.  
  39. }
  40. /*
  41. Returns the weight of Vertex if it is connected.
  42. If not connected -1 will indicate that its not.
  43. */
  44. double CheckConnection(int vertex1, int vertex2)
  45. {
  46. Vertex* check = list_Vertex[vertex1-1];
  47.  
  48. const auto& checklist = check->Aj;
  49. for(auto i = checklist.begin(); i!= checklist.end();i++)
  50. {
  51. if(i->AdjacencyNumber == vertex2)
  52. {
  53. return i->weight/1.0;
  54. }
  55. }
  56.  
  57. return -1;
  58. }
  59.  
  60. private:
  61. struct Vertex//nested struct to track adjacency vertex
  62. {
  63. //Adjacency vertex to see the neighboring vertexes.
  64. struct Adjacency
  65. {
  66. int AdjacencyNumber;
  67. double weight;
  68. Adjacency() : AdjacencyNumber{}, weight{} {}
  69. };
  70.  
  71. list<Adjacency> Aj;
  72. int Vertexnumber;
  73.  
  74. Vertex() : Aj{}, Vertexnumber {} {}
  75.  
  76. };
  77. int numvectors;
  78. vector<int> indegrees;
  79. vector<Vertex*> list_Vertex;
  80.  
  81.  
  82. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement