##
my %seen;
my @array = grep !$seen{$_}++, @array, $new_value;
####
my %edges;
while () {
my($node1, $node2) = split;
my %seen;
@{$edges{$node1}} = grep !$seen{$_}++, @{$edges{$node1}}, $node2;
}
## ##
my %edges;
my %seen;
while () {
my($node1, $node2) = split;
next if !$seen{$node1}{$node2}++;
push @{$edges{$node1}}, $node2;
}