Efficient algorithm for assigning weights to nodes in graph to create steady state flow
I will assume, that all weights are rational (since there is a problem with representing irrational numbers on computer).

You can solve this problem by using linear programming in similar manner to finding maximal flow. 

$\forall_{v \in V} w_V$ is constant.

$\forall_{e \in E} w_e$ is variable.

Firstly, for each node we want to be sure that inward flow is equal to outward flow:
$$\forall_{v \in V} \sum_{(v_{i}, v)\in E}w_{v_{i}}w_{(v_{i}, v)} = \sum_{(v, v_o)\in E}w_{v}w_{(v, v_o)}$$

Then we want to be sure, that every edge is non negative:
$$\forall_{e \in E} w_e \geq 0$$

You can notice, that if there is any non-trivial solution then there are infinitely many, arbitrary large flows (you can multiply weight of every edge by constant $c$ and it will be still valid). So if there is any non-trivial solution, then there is a solution with sum of weights of edges not smaller then 1:
$$\sum_{e \in E} w_e \geq 1$$

Now what's left is to check if there is a solution for this linear programming instance.