Code of bahadyr
<?Php

  $fp 
FOpen("map.txt""r");
  
$fread FRead($fpFileSize("map.txt"));
  
FClose($fp);

  
/* Creating my own map */
  
$map = Array();
  For (
$i 0$i 12$i++) {
    For (
$j 0$j 12$j++) {
      
$map[$i][$j] = -1;
    }
  }
  
$lines Explode("\n"$fread);
  ForEach (
$lines as $info) {
    
$info_arr Explode(" "$info);
    
$i Ord($info_arr[0]) - 65;
    
$j Ord($info_arr[2]) - 65;
    
$dist $info_arr[1];
    If (
$map[$i][$j] == -|| $dist $map[$i][$j]) {
      
$map[$i][$j] = $dist;
    }
    If (
$info_arr[3] == 2) {
      If (
$map[$j][$i] == -|| $dist $map[$j][$i]) {
        
$map[$j][$i] = $dist;
      }
    }
  }
  
/* My map is ready :) */

  /* Creating Route and Distance table */
  
$route = Array();
  
$distance = Array();
  For (
$i 0$i 12$i++) {
    For (
$j 0$j 12$j++) {
      If (
$map[$i][$j] != -1) {
        
$distance[$i][$j] = $map[$i][$j];
        
$route[$i][$j] = $i;
      }
      Else {
        
$distance[$i][$j] = 999999;
        
$route[$i][$j] = -1;
      }
    }
    
$distance[$i][$i] = 0;
  }
  For (
$k 0$k 12$k++) {
    For (
$i 0$i 12$i++) {
      For (
$j 0$j 12$j++) {
        If (
$distance[$i][$k] + $distance[$k][$j] < $distance[$i][$j]) {
          
$distance[$i][$j] = $distance[$i][$k] + $distance[$k][$j];
          
$route[$i][$j] = $k;
        }
      }
    }
  }
  
/* They are ready :) */

  /* Read dest.txt and print shortest ways */
  
$fp FOpen("dest.txt""r");
  
$fread FRead($fpFileSize("dest.txt"));
  
FClose($fp);
  
$way = Array();
  
$w = -1;
  
$list Explode(" "$fread);
  For (
$i 0$i Count($list)-1$i++) {
    
$f Ord($list[$i]) - 65;
    
$t Ord($list[$i+1]) - 65;
    If (
$route[$f][$t] == $f) {
      If (
$way[$w] != Chr($f+65)) { $way[++$w] = Chr($f+65); }
      If (
$way[$w] != Chr($t+65)) { $way[++$w] = Chr($t+65); }
    }
    Else {
      
$f2 $f;
      While (
$route[$f2][$t] != $f2) {
        If (
$way[$w] != Chr($f2+65)) { $way[++$w] = Chr($f2+65); }
        
$f2 $route[$f2][$t];
      }
      If (
$way[$w] != Chr($f2+65)) { $way[++$w] = Chr($f2+65); }
    }
    
$total_dist += $distance[$f][$t];
  }
  If (
$way[$w] != Chr($t+65)) { $way[++$w] = Chr($t+65); }
  Echo 
Join(" "$way) . " " $total_dist;

?>


Back to results


© Copyright 2003-2023 www.php-editors.com. The ultimate PHP Editor and PHP IDE site.