($n,$m,$s,$g)=<>=~/\d+/g; for(<>){ ($a,$b,$c)=/\d+/g; $c{$a,$b}=$c{$b,$a}=$c; } $v[$g]=1; push@a,$g; while(@a){ $a=pop@a; for$b(0..$n-1){ if($c=$c{$a,$b}){ if($v[$b]==0||$v[$b]>$v[$a]+$c) { $v[$b]=$v[$a]+$c; $p[$b]=$a; push@a,$b; }elsif($v[$b]==$v[$a]+$c) { $p[$b].=" $a"; push@a,$b; } } } } print $s; $a=$s; do{ ($a)=sort{$a-$b}$p[$a]=~/\d+/g; print" $a"; }while($a!=$g);