A only changes rows when the candidate through B is smaller.

highlighted = computed this step

A does not replace itself

The candidate for A through B is 2, but A keeps its self distance 0.

2>02>0
Compare candidatesRouter A recomputes candidates from B and updates only rows that improve.Compare candidates - A via B, route A to B to D, cost 5destcurrentB advertises1 + advdecisionupdatednext hopA012keep self0selfB101tie1BC523improve3BD99945improve5B

B ties the current row

The candidate for B is 1, equal to A's current B distance.

1=11=1
Compare candidatesRouter A recomputes candidates from B and updates only rows that improve.Compare candidates - A via B, route A to B to D, cost 5destcurrentB advertises1 + advdecisionupdatednext hopA012keep self0selfB101tie1BC523improve3BD99945improve5B

C improves through B

The candidate for C is 3, which is smaller than A's current 5.

3<53<5
Compare candidatesRouter A recomputes candidates from B and updates only rows that improve.Compare candidates - A via B, route A to B to D, cost 5destcurrentB advertises1 + advdecisionupdatednext hopA012keep self0selfB101tie1BC523improve3BD99945improve5B

D becomes reachable

The candidate for D is 5, replacing the toy infinity value 999.

5<9995<999
Compare candidatesRouter A recomputes candidates from B and updates only rows that improve.Compare candidates - A via B, route A to B to D, cost 5destcurrentB advertises1 + advdecisionupdatednext hopA012keep self0selfB101tie1BC523improve3BD99945improve5B

Summary

Only smaller candidates change the table; in this update, C and D both switch to next hop B.

improved rows=2\text{improved rows}=2
Compare candidatesRouter A recomputes candidates from B and updates only rows that improve.Compare candidates - A via B, route A to B to D, cost 5destcurrentB advertises1 + advdecisionupdatednext hopA012keep self0selfB101tie1BC523improve3BD99945improve5B