Igraph (C) возвращает неверные идентификаторы вершин

Я пытаюсь загрузить простой график в формате gml (я могу загрузить его при необходимости) и вычислить его список смежности и распечатать его для каждой вершины.

Вот что я делаю:

int
main(int argc, char *argv[])
{

igraph_t g;
igraph_adjlist_t adjlist;
int num_edges, num_vertices;

FILE *ifile;
ifile = fopen("example.gml", "r");
igraph_read_graph_gml(&g, ifile);
fclose(ifile);

n_vertices = igraph_vcount(&g);

cout << "vertices: " << n_vertices << endl;

igraph_adjlist_init(&g, &adjlist, IGRAPH_OUT);
igraph_vector_t *vect_adj;

for (int n = 0; n < n_vertices; n++)
{
igraph_vs_t adc;
igraph_vs_adj(&adc, n, IGRAPH_OUT);
cout << "TYPE " << igraph_vs_type(&adc) << "\n";

vect_adj = (igraph_vector_t *)igraph_adjlist_get(&adjlist, n);

printf("\nvertex %d n adjs %ld\n", n, igraph_vector_size(vect_adj));
for (int f = 0; f < igraph_vector_size(vect_adj); f++)
{
cout << "node id " << (long int)igraph_vector_e(vect_adj, f) << endl;
long int neighbor = VECTOR(*vect_adj)[f];
cout << "nid " << neighbor << endl;
}
}

igraph_destroy(&g);

}

но происходит то, что я всегда получаю 0 в качестве идентификатора, как если бы была какая-то проблема с преобразованием типов. Что я здесь не так делаю?

2

Решение

Я думаю, смысл в том, чтобы использовать типизированный вектор, как igraph_vector_int_t и типизированные функции, а также, igraph_vector_int_size,

2

Другие решения


По вопросам рекламы [email protected]