Ścieżka krytyczna w grafie - Algorytm CPM

0

Witam,
Zabieram się do napisania programu który wyszuka sieżke krytyczna w grafie, za pomocą algorytmu CPM(critical path method). Moje pytanie jak zorgaizowac wczytanie dowolnego grafu ???
Nie ukrywam ze programowanie to jedna z moich slabszych stron, prosze o pomoc i wyrozumialosc :)

0

jak masz mało wierzchołków to można np. tak:
vector<int> wartoscKtoraPrzechowujeWierzcholek;
vector<vector<bool> > czyJestPolaczenie; // czyli tablica co z czym jest polaczone tj. jeśli istnieje połączenie między wierzchołkiem (x) i (y) to czyJestPolaczenie[x][y] == true

albo tak:
struct Wierzcholek
{
int wartosc;
vector<int> polaczonyZ; // indeksy do wierzcholkow z ktorymi jest polaczony
};
vector<Wierzcholek> wierzcholki; // wszystkie wierzcholki

albo tak:
map<int, int> polaczenia; // do mapy dodajesz indeksy ktore sa polaczone
vector<int> wartoscKtoraPrzechowujeWierzcholek;

w zasadzie wszystko zależy od tego jak wyglądają dane wejściowe, ile jest połączeń, co zamierzasz z tym grafem robić

0

Wszystko zależy od tego w jakim formacie masz dane.

0

dane bedą wczytywane na 3 sposoby: z klawiatury, z pliku, generowane losowo. Liczba wierzcholków bedzie dynamiczna

0

Nie o to chodzi. Chodzi o to:

  • czy znasz ilość wierzchołków w grafie przed wczytaniem pierwszego wierzchołka?
  • czy znasz ilość krawędzi w grafie zanim wczytasz pierwszą krawędź?
  • czy znasz ilość krawędzi wchodzącą/wychodzącą z danego wierzchołka zanim wczytasz pierwszą z tych krawędzi?
0
  • czy znasz ilość wierzchołków w grafie przed wczytaniem pierwszego wierzchołka? - tak, bede znał
  • czy znasz ilość krawędzi w grafie zanim wczytasz pierwszą krawędź? tak, bede znał
  • czy znasz ilość krawędzi wchodzącą/wychodzącą z danego wierzchołka zanim wczytasz pierwszą z tych krawędzi? tak, bede znal

wczytam to na początku programu

0
vector<vector<pair<size_t,double> > > Graph;
for(size_t i=0;i<Graph.size();++i)
   for(size_t k=0;k<Graph[i].size();++k) 
      cout<<"wierzchołek "<<i<<" połączony krawędzią z wierzchołkiem "<<Graph[i][k].first<<" z wagą "<<Graph[i][k].second<<endl;

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