274 |
279 |
275 AttributeWriter<WriterTraits> attribute_writer; |
280 AttributeWriter<WriterTraits> attribute_writer; |
276 }; |
281 }; |
277 |
282 |
278 |
283 |
|
284 ///\anchor writeGraph() |
|
285 /// |
279 /// \brief Write a graph to the output. |
286 /// \brief Write a graph to the output. |
280 /// |
287 /// |
281 /// Write a graph to the output. |
288 /// Write a graph to the output. |
|
289 /// \param os The output stream. |
|
290 /// \param g The graph. |
|
291 template<typename Graph> |
|
292 void writeGraph(std::ostream& os, const Graph &g) { |
|
293 GraphWriter<Graph> writer(os, g); |
|
294 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
295 writer.writeNodeMap("id", nodeIdMap); |
|
296 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
297 writer.writeEdgeMap("id", edgeIdMap); |
|
298 writer.run(); |
|
299 } |
|
300 |
|
301 /// \brief Write a capacitated graph instance to the output. |
|
302 /// |
|
303 /// Write a capacitated graph (graph+capacity on the |
|
304 /// edges) to the output. |
|
305 /// \param os The output stream. |
|
306 /// \param g The graph. |
|
307 /// \param capacity The capacity map. |
|
308 template<typename Graph, typename CapacityMap> |
|
309 void writeGraph(std::ostream& os, const Graph &g, |
|
310 const CapacityMap& capacity) { |
|
311 GraphWriter<Graph> writer(os, g); |
|
312 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
313 writer.writeNodeMap("id", nodeIdMap); |
|
314 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
315 writer.writeEdgeMap("id", edgeIdMap); |
|
316 writer.writeEdgeMap("capacity", capacity); |
|
317 writer.run(); |
|
318 } |
|
319 |
|
320 /// \brief Write a shortest path instance to the output. |
|
321 /// |
|
322 /// Write a shortest path instance (graph+capacity on the |
|
323 /// edges+designated source) to the output. |
|
324 /// \param os The output stream. |
|
325 /// \param g The graph. |
|
326 /// \param capacity The capacity map. |
|
327 /// \param s The source node. |
|
328 template<typename Graph, typename CapacityMap> |
|
329 void writeGraph(std::ostream& os, const Graph &g, |
|
330 const CapacityMap& capacity, const typename Graph::Node &s) { |
|
331 GraphWriter<Graph> writer(os, g); |
|
332 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
333 writer.writeNodeMap("id", nodeIdMap); |
|
334 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
335 writer.writeEdgeMap("id", edgeIdMap); |
|
336 writer.writeEdgeMap("capacity", capacity); |
|
337 writer.writeNode("source", s); |
|
338 writer.run(); |
|
339 } |
|
340 |
|
341 |
|
342 /// \brief Write a max flow instance to the output. |
|
343 /// |
|
344 /// Write a max flow instance (graph+capacity on the |
|
345 /// edges+designated source and target) to the output. |
|
346 /// |
|
347 /// \param os The output stream. |
|
348 /// \param g The graph. |
|
349 /// \param capacity The capacity map. |
|
350 /// \param s The source node. |
|
351 /// \param t The target node. |
|
352 template<typename Graph, typename CapacityMap> |
|
353 void writeGraph(std::ostream& os, const Graph &g, |
|
354 const CapacityMap& capacity, const typename Graph::Node &s, |
|
355 const typename Graph::Node &t) { |
|
356 GraphWriter<Graph> writer(os, g); |
|
357 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
358 writer.writeNodeMap("id", nodeIdMap); |
|
359 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
360 writer.writeEdgeMap("id", edgeIdMap); |
|
361 writer.writeEdgeMap("capacity", capacity); |
|
362 writer.writeNode("source", s); |
|
363 writer.writeNode("target", t); |
|
364 writer.run(); |
|
365 } |
|
366 |
|
367 /// \brief Write a min cost flow instance to the output. |
|
368 /// |
|
369 /// Write a min cost flow instance (graph+capacity on the edges+cost |
|
370 /// function on the edges+designated source and target) to the output. |
|
371 /// |
282 /// \param os The output stream. |
372 /// \param os The output stream. |
283 /// \param g The graph. |
373 /// \param g The graph. |
284 /// \param capacity The capacity map. |
374 /// \param capacity The capacity map. |
285 /// \param s The source node. |
375 /// \param s The source node. |
286 /// \param t The target node. |
376 /// \param t The target node. |
299 writer.writeNode("source", s); |
389 writer.writeNode("source", s); |
300 writer.writeNode("target", t); |
390 writer.writeNode("target", t); |
301 writer.run(); |
391 writer.run(); |
302 } |
392 } |
303 |
393 |
304 /// \brief Write a graph to the output. |
|
305 /// |
|
306 /// Write a graph to the output. |
|
307 /// \param os The output stream. |
|
308 /// \param g The graph. |
|
309 /// \param capacity The capacity map. |
|
310 /// \param s The source node. |
|
311 /// \param t The target node. |
|
312 template<typename Graph, typename CapacityMap> |
|
313 void writeGraph(std::ostream& os, const Graph &g, |
|
314 const CapacityMap& capacity, const typename Graph::Node &s, |
|
315 const typename Graph::Node &t) { |
|
316 GraphWriter<Graph> writer(os, g); |
|
317 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
318 writer.writeNodeMap("id", nodeIdMap); |
|
319 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
320 writer.writeEdgeMap("id", edgeIdMap); |
|
321 writer.writeEdgeMap("capacity", capacity); |
|
322 writer.writeNode("source", s); |
|
323 writer.writeNode("target", t); |
|
324 writer.run(); |
|
325 } |
|
326 |
|
327 /// \brief Write a graph to the output. |
|
328 /// |
|
329 /// Write a graph to the output. |
|
330 /// \param os The output stream. |
|
331 /// \param g The graph. |
|
332 /// \param capacity The capacity map. |
|
333 /// \param s The source node. |
|
334 template<typename Graph, typename CapacityMap> |
|
335 void writeGraph(std::ostream& os, const Graph &g, |
|
336 const CapacityMap& capacity, const typename Graph::Node &s) { |
|
337 GraphWriter<Graph> writer(os, g); |
|
338 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
339 writer.writeNodeMap("id", nodeIdMap); |
|
340 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
341 writer.writeEdgeMap("id", edgeIdMap); |
|
342 writer.writeEdgeMap("capacity", capacity); |
|
343 writer.writeNode("source", s); |
|
344 writer.run(); |
|
345 } |
|
346 |
|
347 /// \brief Write a graph to the output. |
|
348 /// |
|
349 /// Write a graph to the output. |
|
350 /// \param os The output stream. |
|
351 /// \param g The graph. |
|
352 /// \param capacity The capacity map. |
|
353 template<typename Graph, typename CapacityMap> |
|
354 void writeGraph(std::ostream& os, const Graph &g, |
|
355 const CapacityMap& capacity) { |
|
356 GraphWriter<Graph> writer(os, g); |
|
357 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
358 writer.writeNodeMap("id", nodeIdMap); |
|
359 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
360 writer.writeEdgeMap("id", edgeIdMap); |
|
361 writer.writeEdgeMap("capacity", capacity); |
|
362 writer.run(); |
|
363 } |
|
364 |
|
365 /// \brief Write a graph to the output. |
|
366 /// |
|
367 /// Write a graph to the output. |
|
368 /// \param os The output stream. |
|
369 /// \param g The graph. |
|
370 template<typename Graph> |
|
371 void writeGraph(std::ostream& os, const Graph &g) { |
|
372 GraphWriter<Graph> writer(os, g); |
|
373 IdMap<Graph, typename Graph::Node> nodeIdMap(g); |
|
374 writer.writeNodeMap("id", nodeIdMap); |
|
375 IdMap<Graph, typename Graph::Edge> edgeIdMap(g); |
|
376 writer.writeEdgeMap("id", edgeIdMap); |
|
377 writer.run(); |
|
378 } |
|
379 |
|
380 /// \brief The undirected graph writer class. |
394 /// \brief The undirected graph writer class. |
381 /// |
395 /// |
382 /// The \c UndirGraphWriter class provides the undir graph output. To write |
396 /// The \c UndirGraphWriter class provides the undir graph output. To write |
383 /// a graph you should first give writing commands to the writer. You can |
397 /// a graph you should first give writing commands to the writer. You can |
384 /// declare write command as \c NodeMap, \c EdgeMap or \c UndirEdgeMap |
398 /// declare write command as \c NodeMap, \c EdgeMap or \c UndirEdgeMap |