질문이 있습니다.

다익스트라 알고리즘을 이용한 지하철 경로 찾기를 만들고 있는데요.(아래는 메인 소스)
해당 아래 소스를 실행하면 단순히 최소 시간 경로로 나오게 되는데요(이것도 환승할때 추가시간 처리는 안되어 있음)

궁금한것은 아래 굵은 표시가 된 부분에서 환승을 했을 경우 시간값을 약간씩 더해서 최소환승을 구현해야 되는데,
어떤식으로 구현해야 할지 고수님들은 조언부탁드립니다.


참고로 아래 소스는 java로 만들어졌습니다.



private void OnCald() {
                      
                int n = 463; // 지하철 역수
                
                int i,j,k=0;
                int s=0,e=0,min; // s는 시작노드, e는 도착노드, min은 최소거리를 나타냄
                int [] v = new int[n]; // v는 최종적인 확정된 길을 나타냄
                int [] distance = new int[n]; // distance는 시작노드에 최종노드까지 최단거리 
                int [] via = new int[n];

                
                String strStart = myStart.getText();
                s =  Integer.parseInt(strStart);
                
                String strend = myEnd.getText();
                e =  Integer.parseInt(strend);
                
                for( j=0; j<n; j++ ) {
                    v[j] = 0;
                    distance[j] = m;
                }

                distance[s] = 0;

                for( i=0; i<n; i++ ) {
                            min = m;
                            for( j=0; j<n; j++ ) {
                                     if( v[j] == 0 && distance[j] < min ) {
                                              k = j;
                                              min = (int)distance[j];
                                     }
                            }
                            
                           v[k] = 1;
                           if(min==m) break;

                           for(j=0; j<n; j++) {
                                   if(distance[k]==m || data[k][j]==m)
                                                   continue;
                                   if(distance[j] > distance[k] + data[k][j]) {
                                           distance[j] = distance[k] + data[k][j];
                                           via[j]=k;
                                   }
                           }
                 }

        
                 int nDistance = distance[e];
                 
                 String strResult = \"최단거리:\" + Integer.toString(nDistance) + \" 입니다.\" + \"\\n\";
                 
                 
                 
                  int path[] = new int[n];
                  int path_cnt=0;
                  k=e;

                  while(true) {
                   path[path_cnt++]=k;
                  if(k==s)break;
                   k= via[k];
                  }

                  strResult = strResult + \"경로:\";
                
                  
                  for(i=path_cnt-1;i>=1;i--) {
                        
                          Stn_Seoul row = (Stn_Seoul) m_vector.elementAt(path[i]);
                          strResult = strResult + row.GetName() + \"(\" + Integer.toString(path[i]) + \")\" + \" -> \";
                  }
                  Stn_Seoul row = (Stn_Seoul) m_vector.elementAt(path[i]);
                  strResult = strResult + row.GetName() + \"(\" + Integer.toString(path[i]) + \")\" + \"입니다.\";
                  
                
                  
                  m_Result.setText(strResult);
        }