All problems
0861MediumMathTreeDepth-First Search

Odd Weightings on the Longest Branch

Tracked in this browser only
Write code

Trains the technique from

LeetCode 3558Number of Ways to Assign Edge Weights I

This is an original problem, written from a brief that listed the technique, the difficulty, the topics, the function shape and the input bounds — none of that problem's wording, examples, hints or editorials. The link is there so you can map your practice onto the standard set.

Same function shape, different story and different numbers.

A pipe network is a tree of n junctions numbered 1 through n, joined by n - 1 pipes given as edges, where edges[i] = [u, v] is a pipe between junction u and junction v. Junction 1 is the pumping station.

Let m be the greatest number of pipes on any run that starts at the pumping station and never doubles back.

Each of those m pipes is to be given a weight of either 1 or 2. Return how many ways the weights can be chosen so that they add up to an odd total, taken modulo 1000000007.

Examples

Example 1

Input
edges = [[1, 2], [2, 3], [3, 4]]
Output
4

The junctions form a line, so the longest run out of the station holds three pipes. Of the eight weightings of three pipes, four add up to an odd total.

Example 2

Input
edges = [[1, 2], [2, 3]]
Output
2

The longest run holds two pipes. Of the four weightings, the two that use one 1 and one 2 add up to an odd total.

Example 3

Input
edges = [[1, 2], [1, 3], [1, 4], [1, 5]]
Output
1

Every junction hangs directly off the station, so the longest run is one pipe however many branches there are.

Constraints

  • 2 <= edges.length + 1 <= 10^5
  • edges.length >= 1
  • edges[i].length == 2
  • 1 <= edges[i][0] <= 100000
  • 1 <= edges[i][1] <= 100000
  • edges describes a tree on the junctions 1 through edges.length + 1

The signature

The editor is preloaded with this. It matches the parent problem's shape, so a solution that works here transfers to a judge unchanged.

Python
def odd_weightings(edges: list[list[int]]) -> int:
Java
public int oddWeightings(int[][] edges)
September 7
Apply