Witam!

Mam problem z algorytmem Dijkstry. Proszę o pomoc. Wyrzuca mi na konsolę segmentation fault.

void Dijkstra(Graph & h, int poczatkowy, int koncowy, vector<int> &trasa)
 {
  int numberOfVertices = h.NumberOfVertices();

  bool *known = new bool[numberOfVertices];
  int *distance = new int[numberOfVertices];
  int *predecessor = new int[numberOfVertices];
  trasa.resize(0);

  priority_queue<int> kolejka;

  for(int i = 0; i < numberOfVertices; i++)
     {
      known[i] = false;
      distance[i] = 999999;
      predecessor[i] = -1;
      }

  distance[poczatkowy] = 0;
  kolejka.push(poczatkowy);

  while( !kolejka.empty() )
     {
      int v = kolejka.top();
      kolejka.pop();

      if( known[v] != true)
         {
          known[v] = true;
          Iterator<Edge> &iter = h.EmanatingEdges(v);

          while( !iter.IsDone() )
             {
              Edge &e = *iter;
              Vertex &w = e.mate(v);
              int d = distance[v] + e.weight;
              int wnumber = w.Number();
              if( distance[wnumber] > d )
                 {
                  distance[wnumber] = d;
                  predecessor[wnumber] = v;
                  kolejka.push(wnumber);
                  }
              ++iter;
              }
          }
      }
  int i = 1;
  trasa[0] = koncowy;
  do 
     {
      trasa[i] = predecessor[trasa[i-1]];
      ++i; 
      }while (predecessor[i] != poczatkowy);
 }

 void Shortest_path (GraphAsList g, int poczatek, int koniec)
 {
  vector<int> trasa;
  Dijkstra(g, poczatek, koniec, trasa);
  int i = trasa.size();
  while ( i != 0)
     {
      cout << g.SelectVertex(trasa[i]).label << " - " << g.SelectVertex(trasa[--i]).label << " " << g.SelectEdge(trasa[i+1], trasa[i]).weight << endl; 
      }
  }