Let us trace Dijkstra's algorithm step by step starting from source S:
Initialization:
Distances: d(S)=0, all others ∞.
Extract S (d=0):
Relax edges from S:
d(A)=0+4=4, parent(A)=S
d(B)=0+3=3, parent(B)=S
d(D)=0+7=7, parent(D)=S
Extract B (d=3):
Relax edge (B,D) with weight 4: d(D)=min(7,3+4)=7. Since 7 is not strictly shorter than 7, distance and parent of D are not updated.
Extract A (d=4):
Relax edge (A,C) with weight 1: d(C)=4+1=5, parent(C)=A.
Extract C (d=5):
Relax edge (C,D) with weight 3: 5+3=8>7 (no update).
Relax edge (C,E) with weight 1: d(E)=5+1=6, parent(E)=C.
Extract E (d=6):
Relax (E,D) with weight 1: 6+1=7 (not strictly shorter, no update to D).
Relax (E,G) with weight 2: d(G)=6+2=8, parent(G)=E.
Relax (E,T) with weight 4: d(T)=6+4=10, parent(T)=E.
Extract D (d=7):
Relax (D,T) with weight 3: 7+3=10 (not strictly shorter than 10, no update to T).
Relax (D,F) with weight 5: d(F)=7+5=12, parent(F)=D.
Extract G (d=8):
Relax (G,T) with weight 3: 8+3=11>10 (no update).
When T is reached with distance 10, the parent pointers traced back are:
T←E←C←A←S
Thus, the path found is SACET.
Therefore, (D) is the correct option.