# Add Weights to Graph Edges

**00:00**
Add Weights to Graph Edges. Go back to the `converter`

module and update the `Edge`

class by adding a property that will calculate the actual distance between its two nodes.

**00:13**
Here, you want to calculate the Euclidean distance between the nodes using Python’s `math`

module, so it’s imported first.

**00:31**
The `math.dist()`

function takes two points specified as sequences of coordinates. In this case, you provide tuples of the row and column indices of squares corresponding to the nodes. Note that you could define distance differently—for example, as the sum of absolute values of differences in the horizontal and vertical directions. You can update the function `make_graph()`

to use the new property.

**01:06**
Notice how you change the graph data passed to `nx.Graph`

, which is now a sequence of tuples consisting of the two nodes and a dictionary with extra attributes.

**01:16**
You specify only one attribute named `weight`

, whose value is equal to the edge’s distance. Next, update the functions in the `solver`

module to tell NetworkX which attribute to use as the weight.

**01:38**
The `weight`

parameter lets you specify the name of an attribute in a dictionary associated with each graph edge.

**01:54**
Now, when you call `solve_all()`

on the Pac-Man maze, you’ll get two equivalent solutions, which lead you to the exit on the left. Clearly, both paths have the same length, so it shouldn’t matter which one you choose. However, notice that the upper path contains three extra nodes representing the intersections, including one with a chamber opening in the middle of the maze, while the lower path doesn’t.

**02:19**
Now you have weights in your graph, you can use other factors besides the distance to influence the algorithm’s decision. For example, you may want to favor paths with fewer enemies or more rewards, and you’ll find out how to do that in the next section of the course.

Become a Member to join the conversation.