Я пытаюсь выяснить, как составить список смежности, но мне трудно понять, что мне нужно делать. У меня есть этот код Java:
public class Graph
{
private final int V;
private Bag<Integer>[] adj;
public Graph(int V)
{
this.V = V;
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
}
public void addEdge(int v, int w)
{
adj[v].add(w);
adj[w].add(v);
}
Но я пытаюсь понять это и преобразовать это в c ++. Основная часть, в которой я не уверен, это
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
Может кто-нибудь помочь перенести это на C ++, пожалуйста?
Джава:
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
C ++:
vector<vector<int>> adj;
for(int v=0;v<V;v++) adj.push_back(vector<int>());
Джава:
public void addEdge(int v, int w)
{
adj[v].add(w);
adj[w].add(v);
}
C ++:
public void addEdge(int v, int w)
{
adj[v].push_back(w);
adj[w].push_back(v);
}
Еще одна вещь: BigInteger может хранить числа намного больше, чем int. Но не обязательно использовать BigInteger. Поскольку w и v в addEdge должны быть меньше, чем V (V — это int), иначе это приведет к переполнению диапазона массива.
Других решений пока нет …