본문 바로가기

알고리즘/C++

Ford 알고리즘

void Graph::AllLengths (const int n) {
   for (int i=0; i<n; i++) 		// a = 인접행렬
      for (int j=0; j<n; j++)
         a[i][j] = length[i][j];
   
   for (int k=0; k<n; k++)	// 제일 큰 정점의 index가 k인 경로에 대해
      for (i=0; i<n; i++)
         for (int j=0; j<n; j++)
            if ( (a[i][k]+a[k][j]) < a[i][j] )
               a[i][j] = a[i][k] + a[k][j];
}