The traditional theory of road networks defines as system optimal a feasible flow vector which minimises the network total transport cost, and shows that this optimal vector can be transformed into an equilibrium one if additional costs, equal to the difference between marginal costs and private costs, are imposed on each link of the network. However some authors have shown that, could tolls be imposed on all links of a network, there would be an infinity of such optimal vectors. But in real life tolls can be charged only on some links of road networks, and in this case very often the set of optimal toll vectors is empty. Moreover, the real reason for which tolls are imposed on some network links is not to minimise total transportation costs, but to recover road maintenance expenses and, at least in part, construction costs. Therefore, the optimal toll vector and corresponding flow pattern are those which produce a partition of road costs between road users and society as a whole in such a way as to maximise social welfare. This paper presents a theory of optimal flow pattern founded on this principle. A method of computing optimal tolls is proposed and is applied to a real network.