我正在尝试使用vector向量创建邻接表。节点数量在代码开始时未知,而是从控制台输入的。节点从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
。
是什么原因?
另外
当我更改代码时
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);
}