In case of weight is on the nodes of a graph .. simply add W[v] in place of weight in the adjecency list ... v<-u ...node while doing dfs from u to u. and when we need to calculatate distence between two nodes simply add dist[lca] in existing distence;
In case of segment tree better option will be propogating and updating the tree only while querying cuz all the updates will be on the lazy tree and when we we will update while querying all the updates will be pushed down . This is more efficient and takes less time.