Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void graph::widthAllVertexex(int vertexName)
- {
- // есть ли такая вершина в графе вообще
- bool checkVertexName = false;
- for (int i = 0; i < matrixSize; i++)
- if (vertexNames[i] == vertexName)
- checkVertexName = true;
- if (!checkVertexName)
- return;
- // помеченные вершины
- bool *used = new bool[currentVertexNumber];
- for (int i = 0; i < currentVertexNumber; i++)
- used[i] = false;
- // список вершин
- int *list = new int[edgeNumber * 2];
- int currentVertexNumberInList = 0;
- int firstIndex = 0;
- int lastIndex = 0;
- int currentVertex = vertexName;
- used[searchVertex(currentVertex)] = true;
- list[lastIndex] = currentVertex;
- currentVertexNumberInList++;
- lastIndex++;
- while (currentVertexNumberInList != 0)
- {
- currentVertex = list[firstIndex];
- firstIndex++;
- currentVertexNumberInList--;
- for (int i = 0; i < currentVertexNumber; i++)
- {
- // нахождение 1 в матрице и была ли помечена вершина
- if (adjacencyMatrix[searchVertex(currentVertex)][i] && !used[i])
- {
- used[i] = true;
- list[lastIndex] = vertexNames[i];
- lastIndex++;
- currentVertexNumberInList++;
- }
- }
- if (currentVertexNumberInList >= 0)
- {
- cout << currentVertex << " | ";
- for (int i = firstIndex; i < lastIndex; i++)
- cout << list[i] << " ";
- cout << endl;
- }
- }
- delete[] list;
- delete[] used;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement