online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
// funkcja zwracająca wierzchołki połączone ze wskazanym function getConnectedNodes(graph, node) { // wynik przechowamy w zbiorze aby uniknąć powtórzeń const result = new Set(); // najpierw zbierzmy wierzchołki, do których dojdziemy ze wskazanego wierzchołka for (let i = 0; i < graph.length; i++) { const edge = graph[node][i]; if (edge > 0) { result.add(i); } } // następnie wierzchołki z których dojdziemy do wskazanego for (let i = 0; i < graph.length; i++) { const edge = graph[i][node]; if (edge > 0) { result.add(i); } } // zwracamy tablicę zbudowaną z elementów zbioru return [...result]; } // funkcja zwracająca listę wszystkich wierzchołków function getAllNodes(graph) { // wierzchołki to liczby od 0 do N, gdzie N to rozmiar macierzy return [...Array(graph.length).keys()]; } function getSubgraphs(graph) { // lista zbiorów, w których będziemy trzymać wierzchołki const result = []; // zbiór odwiedzonych wierzchołków const visited = new Set(); // iterujemy po wszystkich wierzchołkach for (const node of getAllNodes(graph)) { // jeśli odwiedziliśmy wierzchołek przechodzimy do kolejnego if (visited.has(node)) { continue; } // zbiór z aktualnym grafem const current = new Set(); // odkrywamy graf za pomocą BFS const toVisit = [node]; while (toVisit.length > 0) { // ściągamy pierwszy wierzchołek z kolejki const currentNode = toVisit.pop(); // dodajemy wierzchołek do aktualnego grafu current.add(currentNode); // dodajemy wierzchołek do odwiedzonych visited.add(currentNode); // sprawdzamy sąsiadów wierzchołka for (const neighbor of getConnectedNodes(graph, currentNode)) { // jeżeli sąsiad nie był odwiedzony, dodajemy go do kolejki if (!visited.has(neighbor)) { toVisit.push(neighbor); } } } // dodajemy graf do wyniku result.push(current); } // zwracamy wynik return result; } // macierz sąsiedztwa zawiera 5 grafów: // 2-0-1, 4-5, 6-7-8, 3, 9 const graph = [ [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]; console.log(getSubgraphs(graph));

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue