#!/usr/bin/env perl

use strict;
use warnings;

use Graph::Weighted;

my $gw = Graph::Weighted->new();

my $attr = 'probability';

$gw->populate(
    {
        0 => { 1 => 0.4, 3 => 0.6 },
        1 => { 0 => 0.3, 2 => 0.7 },
    },
    $attr
);

# Show each vertex and its edges
for my $vertex (sort { $a <=> $b } $gw->vertices) {
    warn sprintf "vertex: %s %s=%.2f\n",
        $vertex, $attr, $gw->get_attr($vertex, $attr);

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