#include "AP-Flow.h" void APFlow::CalcFlow() { multimap Q; uint8_t *fp; uint8_t *done; int i, nf, flow, n, node; done = (uint8_t *) malloc(sizeof(uint8_t)*N); for (i = 0; i < N*N; i++) Flow[i] = 0; fp = Flow; for (n = 0; n < N; n++) { Q.clear(); Q.insert(make_pair(-127, n)); for (i = 0; i < N; i++) done[i] = 0; while (!Q.empty()) { node = Q.begin()->second; flow = -Q.begin()->first; /* printf("N:%d Node:%d Flow:%d (%d)\n", n, node, flow, done[node]); */ Q.erase(Q.begin()); if (!done[node]) { fp[node] = flow; done[node] = 1; for (i = 0; i < N; i++) { nf = (Adj[node*N+i] < flow) ? Adj[node*N+i] : flow; if (nf > fp[i]) { Q.insert(make_pair(-nf, i)); fp[i] = nf; } } } } fp += N; } }