Topological Sort

Score: 146.44 (pass)

#!perl
@h{(split)}++for@t=<>;$v=join$/,keys%h,'';{($a,$b)=split,$c+=$v=~s/^\Q$b\E$(.*)^\Q$a\E$/$a${1}$b/msfor@t;$c?$c=0:last;++$h{$v}>1&¨redo}print$v

Score: 153.50 (pass)

#!perl
@t=map{chop;/ /;@h{$',$`}++;"\$v=~s/^\Q$'\E\$(.*)^\Q$`\E\$/$`\${1}$'/ms"}<>;$v=join$/,keys%h,'';{$b+=eval for@t;$b?$b=0:last;++$h{$v}>1&¨redo}print$v

Score: 166.52 (pass)

#!perl
@t=map{s/(.*) (.*)
/\$v=~s\/^\Q$2\E\$(.*)^\Q${1}\E\$\/$1\${1}$2\/ms/;@h{$1,$2}++;$_}<>;$v=join"
",keys%h,'';{$b+=eval for@t;$b||last;++$h{$v}>1&¨$b=0;redo}print$v

Score: 245.55 (pass)

Les premiers seront les derniers et lycée de Versailles.

#!perl -l
for (<>) {
	($a,$b)=split;
	@h{$a,$b}=();
	next if $a eq $b;
	$i{$a,$b}=1
}
@t=keys %h;
if (keys %i){
	$c=@t*@t;
	O:for $p(0..$#t){
		die if !$c--;
		for $j($p+1..$#t) {
			@t[$p,$j]=@t[$j,$p],redo O if $i{$t[$j],$t[$p]}
		}
	}
}
print for @t