while (<>) { chomp; (@row) = split(/ /,$_); foreach $item (@row) { ($node,$value) = split(/->/,$item,2); $graph{$node} = $value; } sub depth { return max map { $_ and 1 + depth($graph{$_}) } @_; shift @_ } print depth(keys %graph); print "\n"; @row = (); $graph = "" } #### 1->14 2->3 3->1 4->5 5->3 6->3 7->9 8->9 9->10 10->6 11->10 12->10 13->10 14->0 15->14 16->15 17->18 18->15 19->18 20->19 21->14 1->2 2->0 3->5 4->5 5->6 6->2 7->2 8->7 9->2 1->2 2->0 3->4 4->2 5->7 6->7 7->4 8->7 9->8 10->2 1->2 2->0 3->2 4->3 5->7 6->5 7->11 8->7 9->7 10->9 11->4 12->11 13->12 14->15 15->11 16->2 1->2 2->0 3->2 1->2 2->0 3->2 4->5 5->3 6->5 7->6 8->6 9->8 10->9 11->12 12->10 13->2 1->2 2->0 3->5 4->5 5->2 6->2 7->6 8->2 1->3 2->3 3->4 4->0 5->4 6->5 7->6 8->6 9->8 10->11 11->8 12->11 13->12 14->4 1->2 2->8 3->2 4->2 5->6 6->4 7->6 8->0 9->8 10->8 #### 9 7 6 9 9 13 10 10 7 #### 7 5 5 8 8 13 10 9 6