private void MakeEdges(IGraphLoader <TV, TE> loader, int vid, Dictionary <VfEdge, VfEdge> dctEdge, List <int> mpIvtxGraphIvtxVf) { var ivtxGraph = loader.PosFromId(vid); var vfeKey = new VfEdge(mpIvtxGraphIvtxVf[ivtxGraph], 0, null); MakeOutEdges(loader, vid, dctEdge, mpIvtxGraphIvtxVf, ref vfeKey); MakeInEdges(loader, vid, dctEdge, mpIvtxGraphIvtxVf, ref vfeKey); }
private void MakeInEdges(IGraphLoader <TV, TE> loader, int vid, Dictionary <VfEdge, VfEdge> dctEdge, List <int> mpIvtxGraphIvtxVf, ref VfEdge vfeKey) { for (var i = 0; i < loader.InEdgeCount(vid); i++) { TE attr; vfeKey.IvtxFrom = mpIvtxGraphIvtxVf[loader.PosFromId(loader.GetInEdge(vid, i, out attr))]; if (!dctEdge.ContainsKey(vfeKey)) { _inEdges[i] = dctEdge[vfeKey] = new VfEdge(vfeKey.IvtxFrom, vfeKey.IvtxTo, attr); vfeKey = new VfEdge(vfeKey.IvtxFrom, vfeKey.IvtxTo, null); } else { _inEdges[i] = dctEdge[vfeKey]; } } }