adjecent list could not be resized in line no. 28.
#include <iostream>
#include <list>
#include <vector>
using namespace std;
#ifndef UNTITLED_GRAPH_H
#define UNTITLED_GRAPH_H
class Graph{
protected:
int vertecies;
vector<list<int>> adj;
public:
Graph();
Graph(int vertecies);
void addEdge(int u, int v);
};
#endif //UNTITLED_GRAPH_H
Graph::Graph() {
}
Graph::Graph(int vertecies) {
this->vertecies = vertecies;
adj.resize(vertecies);
}
void Graph::addEdge(int u, int v) {
//adj.resize(vertecies);
adj[u].push_back(v);
adj[v].push_back(u);
}
#ifndef UNTITLED_BFS_H
#define UNTITLED_BFS_H
class BFS: public Graph {
public:
void treverse(int source);
};
#endif
void BFS::treverse(int source) {
vector<bool> visited;
visited.resize(vertecies, false);
visited[source] = true;
list<int> queue;
queue.push_back(source);
while(!queue.empty()) {
source = queue.front();
cout << source << endl;
queue.pop_front();
for(auto adjecent: adj[source]) {
if(!visited[adjecent]) {
visited[adjecent] = true;
queue.push_back(adjecent);
}
}
}
}
int main() {
BFS::Graph(4);
BFS g;
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
g.treverse(2);
return 0;
}