#include <vector> #include <stack> using namespace std; class GrafoDirigido { struct Arco { int vecino; float peso; Arco * siguiente; Arco(int, float, Arco *); }; struct Vertice { Arco * primerArcoDeEntrada; Arco * primerArcoDeSalida; int gradoDeEntrada; int gradoDeSalida; Vertice(); }; vector<Vertice> vertices; void KosarajuSharirEtapa1DFS(int, vector<bool> &, stack<int> &) const; void KosarajuSharirEtapa2DFS(int, vector<int> &, int) const; public: GrafoDirigido(const char *); void mostrar() const; int cantidadDeVertices() const; vector<int> colorearConectados() const; };