// Edge list =
// const graph = [[0,1],[2,3],[2,1],[1,3]];
// Adjacent List
// const graph = [[2],[2,3],[0,1.3],[1,2]];
// Adjacent matrix
// const graph =
// [[0,0,1,0],
// [0,0,1,1],
// [1,1,0,1],
// [0,1,1,0]];
class Graph {
dynamic numberOfNodes;
Map? adjacentList;
Graph() {
this.numberOfNodes = 0;
this.adjacentList = {
};
}
addVertex( node) {
if (!adjacentList!.containsKey(node)) {
adjacentList![node] = [];
}
numberOfNodes++;
}
addEdge(node1, node2) {
//undirected Graph
adjacentList![node1].add(node2);
adjacentList![node2].add(node1);
}
showConnections() {
adjacentList!.forEach((key, value) {
print('$key --> $value');
});
}
}
void main() {
Graph myGraph = new Graph();
myGraph.addVertex('0');
myGraph.addVertex('1');
myGraph.addVertex('2');
myGraph.addVertex('3');
myGraph.addVertex('4');
myGraph.addVertex('5');
myGraph.addVertex('6');
myGraph.addEdge('3', '1');
myGraph.addEdge('3', '4');
myGraph.addEdge('4', '2');
myGraph.addEdge('4', '5');
myGraph.addEdge('1', '2');
myGraph.addEdge('1', '0');
myGraph.addEdge('0', '2');
myGraph.addEdge('6', '5');
myGraph.showConnections();
//Answer:
// 0-->1 2
// 1-->3 2 0
// 2-->4 1 0
// 3-->1 4
// 4-->3 2 5
// 5-->4 6
// 6-->5
}