Question about space complexity
You say  "using a structure similar to an adjacency list". So space complexity required for storing undirected graph using adjacency list is $O(|V| + |E|)$, in your case $O(|V| + 2|E|)$. That is implemented using a list of nodes where each node has two fields: label of the vertex and pointer to the list of adjacent nodes (in your case two lists). 

But I don't know how you are going to use the graph. If you are interested in simply a set of edges then you could store them in a list as triples $&lt;u,v,weight&gt;$. But if at some point for a node $v$ you want to systematically loop on all adjacent vertices (inward or outward) then you should use adjacency list. 

Finally if you want to decide in $O(1)$ if there is an edge $&lt;u,v&gt;$ then you should use hash like data structure to store pairs $&lt;u,v&gt;$.