Я пытаюсь создать список смежности, используя вектор вектора.Количество узлов неизвестно в начале кода, а вместо этого берется как ввод с консоли.Узлы пронумерованы от 1 года.Ниже приведен код
class Graph {
public:
int numNodes;
vector<vector<int>> g;
Graph(int n):numNodes(n) {
for(int i=0;i < n;i++)
{
vector<int> v;
g.push_back(v);
}
}
void add_edge(int u, int v) {
cout << "adding edge from " << u << " " << v << endl;
g[u-1].push_back(v-1);
g[v-1].push_back(u-1);
cout << "added " << endl;
}
}
По-видимому, при вызове add_edge он никогда не печатает added
.
В чем причина?
Additioanlly
КогдаЯ изменяю свой код
g[u-1].push_back(v-1);
На
vector<int> a = g[v-1];
g[u-1].push_back(v-1);
, он отлично работает.
Мой основной код ниже,
int n, m;
cin >> n; //number of nodes
Graph graph(n);
cin >> m; //number of edges
// read and set edges
for (int i = 0; i < m; i++) {
int u, v; //to and from vertex;
cin >> u >> v;
u--, v--;
// add each edge to the graph
graph.add_edge(u, v);
}