#!/usr/bin/perl
my $damp = 0.85;
my $iter = 30;

my @graph = (
	[1,2,3,4,5,6,7,8,9,10],
	[0,2,3,4,5,6,7,8,9,10],
	[1,0,3,4,5,6,7,8,9,10],
	[1,2,0,4,5,6,7,8,9,10],
	[1,2,3,0,5,6,7,8,9,10],
	[1,2,3,4,0,6,7,8,9,10],
	[1,2,3,4,5,0,7,8,9,10],
	[1,2,3,4,5,6,0,8,9,10],
	[1,2,3,4,5,6,7,0,9,10],
	[1,2,3,4,5,6,7,8,0,10],
	[1,2,3,4,5,6,7,8,9, 0]
        );

$totpr = $#graph + 1;
for $r (0 .. $#graph ) { $pr[$r] = 1.0 / $totpr; }

for $i (0 .. $iter) {
        @newpr = ();
        for $r (0 .. $#graph ) {
                $n = $#{$graph[$r]} + 1;
                $ipr = $damp * ( $pr[$r] / $n );
                for $c (0 .. $#{$graph[$r]} ) {
                        $newpr[$graph[$r][$c]] += $ipr;
                }
        }
        for $r (0 .. $#newpr) {
                $newpr[$r] += (1 - $damp);
        }
        @pr = @newpr;
        print "$i: ";
        for $r (0 .. $#pr) { printf " %.2f",$pr[$r]; }
        print "\n";
}

$totpr=0.0;
for $r (0 .. $#graph ) { $totpr += $pr[$r]; }
printf "\nTotal PR = %.2f\n", $totpr;

print "Final PR:\n";
for $r (0 .. $#pr) {
        $pctpr = 100 * ( $pr[$r] / $totpr );
        printf "%u: %.1f%%\n", $r,$pctpr;
}
print "\n";