Jak najłatwiej wczytać listę incydencji grafu z pliku do tablicy struktur?

0

Witam, jak najłatwiej wczytać listę incydencji grafu typu:

2 6 3 -2 6 3
3 -1 4 3 5 -4
4 1 6 4
5 3
1 -1

Czyli
w pierwszej linii mamy krawędź wierzchołka 1(numer linii) z wierzchołkiem 2 o wadze 6.
później jest 3, czyli krawędź między wierzchołkiem 1 a 3 o wadze -2.
w drugiej linii są krawędzie z wierzchołkiem nr 2 itd.

Da ktoś dobry sposób?

1
struct edge{ int node; int weight; };

std::string line;
std::map<int, std::vector<edge>> graph;
for(int i = 1; std::getline(file, line); i++) {
    std::stringstream ss{line};
    edge tmp;
    while(ss >> tmp.node >> tmp.weight)
        graph[i].push_back(tmp);
}

Coś takiego?

0

jeszcze takie pytanie czysto techniczne. jak dobrać się do jakiegoś elementu mapy w tym przypadku (nigdy nie używałem) aby wypisać?

cout<<graph[1][1];

nie działa

0

graph[1][1] to referencja do edge, więc możesz sobie wypisać:

cout << graph[1][1].node << " -> " << graph[1][1].weight << '\n';

Przy czym zakładam, że te magiczne liczby są tylko na potrzeby przykładu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1