Tarjan: Difference between revisions
m
→{{header|Perl}}: fixed Perl code
m (→{{header|Perl}}: fixed Perl code) |
|||
Line 273:
=={{header|Perl}}==
{{trans|Perl 6}}
<lang perl>use
use feature 'state';
use List::Util qw(min);
use experimental qw(lexical_subs);
sub tarjan {
my sub strong_connect {
my ($vertex, $i) = @_;
for my $
$lowlink{$vertex}
}
}
if ($lowlink{$vertex} eq $index{$vertex}) {
Line 307 ⟶ 308:
for (sort keys %k) {
strong_connect($_, 0) unless $index{$_};
}
@connected;
}
my %test1 = (
0 => [1],
1 => [2],
2 => [0],
3 => [1, 2, 4],
4 => [3, 5],
5 => [2, 6],
6 => [5],
7 => [4, 6, 7]
);
my %test2 = (
'Andy' => ['Bart'],
'Bart' => ['Carl'],
'Carl' => ['Andy'],
'Dave' => [qw<Bart Carl Earl>],
'Earl' => [qw<Dave Fred>],
'Fred' => [qw<Carl Gary>],
'Gary' => ['Fred'],
'Hank' => [qw<Earl Gary Hank>]
);
print "Strongly connected components:\n";
|