-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNetwork.h
More file actions
59 lines (35 loc) · 1.24 KB
/
Network.h
File metadata and controls
59 lines (35 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef Network_mkm_h
#define Network_mkm_h
#include <vector>
#include "FlowEdge.h"
#include "Graph.h"
class Network:public Graph {
private:
size_t numberOfEdges, numberOfVertices, start, finish;
std::vector< size_t > current;
std::vector< std::vector<FlowEdge> > edge;
std::vector< long long > excess;
std::vector< size_t > height;
public:
Network() {}
Network(size_t n, size_t start1, size_t finish1);
void addEdge(size_t from, size_t to, long long capacity);
size_t getNumberOfVertices();
size_t getNumberOfEdges();
size_t getStart();
size_t getFinish();
size_t getEdgeToOnPosition(size_t v, size_t pos);
size_t getVertexDegree(size_t v);
size_t getReversedEdgeNumber(size_t u, size_t number);
long long getCap(size_t v, size_t number);
void setCap(size_t v, size_t number, long long _capacity);
//v->v[number] returns cap(v[number] -> v)
long long getCapReversedEdge(size_t v, size_t number);
long long getFlowReversedEdge(size_t v, size_t number);
long long getFlow(size_t v, size_t number);
void setFlow(size_t v, size_t number, long long _flow);
bool getEdgeReversed(size_t v, size_t number);
void changeFlow(size_t u, size_t pos, long long addflow);
FlowEdge getEdgeOnPosition(size_t u, size_t pos);
};
#endif