Graphe Lire
unknown
c_cpp
4 years ago
938 B
9
Indexable
Graphe Graphe::Lire(const string nom)
{
Graphe resultat;
ifstream fichier(nom);
string temp;
while (getline(fichier, temp))
{
stringstream ligne(temp);
string source;
ligne >> source;
itNoeud it = resultat.noeuds.find(source);
Noeud* sommetSource = (it == resultat.noeuds.end())
? NULL
: it->second
;
if (sommetSource == NULL)
sommetSource = new Noeud(source);
resultat.noeuds[source] = sommetSource;
string dest;
int poids;
while (ligne >> dest >> poids)
{
itNoeud it = resultat.noeuds.find(dest);
Noeud* sommetDest = (it == resultat.noeuds.end())
? NULL
: it->second
;
if (sommetDest == NULL)
{
sommetDest = new Noeud(dest);
resultat.noeuds[dest] = sommetDest;
}
sommetSource->arcs[dest] = new Arc(poids, sommetDest);
sommetDest->indegree++;
}
}
fichier.close();
return resultat;
}Editor is loading...