#!/usr/bin/env perl

use strict;
use warnings;

use Graph::Weighted;

my $attr = 'probability';

my $gw = Graph::Weighted->new();
$gw->populate(
    {
        0 => { label => 'A', 1 => 0.4, 3 => 0.6 },
        1 => { label => 'B', 0 => 0.3, 2 => 0.7 },
        2 => { label => 'C', 0 => 0.5, 2 => 0.5 },
        3 => { label => 'D', 0 => 0.2, 1 => 0.8 },
    },
    $attr
);

for my $vertex (sort { $a <=> $b } $gw->vertices) {
    warn sprintf "%s vertex: %s %s=%.2f\n",
        $gw->get_vertex_attribute($vertex, 'label'),
        $vertex, $attr, $gw->get_cost($vertex, $attr);
    for my $neighbor (sort { $a <=> $b } $gw->neighbors($vertex)) {
        warn sprintf "\tedge to: %s %s=%.2f\n",
            $neighbor, $attr, $gw->get_cost([$vertex, $neighbor], $attr);
    }
}
