public void NotSimple() { var g = new MfGraphInt(2); g.AddEdge(0, 1, 1).Should().Be(0); g.AddEdge(0, 1, 2).Should().Be(1); g.AddEdge(0, 1, 3).Should().Be(2); g.AddEdge(0, 1, 4).Should().Be(3); g.AddEdge(0, 1, 5).Should().Be(4); g.AddEdge(0, 0, 6).Should().Be(5); g.AddEdge(1, 1, 7).Should().Be(6); g.Flow(0, 1).Should().Be(15); MfGraphInt.Edge e; e = new MfGraphInt.Edge(0, 1, 1, 1); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(0, 1, 2, 2); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(0, 1, 3, 3); g.GetEdge(2).Should().Be(e); e = new MfGraphInt.Edge(0, 1, 4, 4); g.GetEdge(3).Should().Be(e); e = new MfGraphInt.Edge(0, 1, 5, 5); g.GetEdge(4).Should().Be(e); g.MinCut(0).Should().Equal(new[] { true, false }); }
public void Simple() { var g = new MfGraphInt(4); g.AddEdge(0, 1, 1).Should().Be(0); g.AddEdge(0, 2, 1).Should().Be(1); g.AddEdge(1, 3, 1).Should().Be(2); g.AddEdge(2, 3, 1).Should().Be(3); g.AddEdge(1, 2, 1).Should().Be(4); g.Flow(0, 3).Should().Be(2); MfGraphInt.Edge e; e = new MfGraphInt.Edge(0, 1, 1, 1); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(0, 2, 1, 1); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(1, 3, 1, 1); g.GetEdge(2).Should().Be(e); e = new MfGraphInt.Edge(2, 3, 1, 1); g.GetEdge(3).Should().Be(e); e = new MfGraphInt.Edge(1, 2, 1, 0); g.GetEdge(4).Should().Be(e); g.MinCut(0).Should().Equal(new[] { true, false, false, false }); }
public void SelfLoop() { var g = new MfGraphInt(3); g.AddEdge(0, 0, 100).Should().Be(0); MfGraphInt.Edge e = new MfGraphInt.Edge(0, 0, 100, 0); g.GetEdge(0).Should().Be(e); }
public void Cut() { var g = new MfGraphInt(3); g.AddEdge(0, 1, 2).Should().Be(0); g.AddEdge(1, 2, 1).Should().Be(1); g.Flow(0, 2).Should().Be(1); MfGraphInt.Edge e; e = new MfGraphInt.Edge(0, 1, 2, 1); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(1, 2, 1, 1); g.GetEdge(1).Should().Be(e); g.MinCut(0).Should().Equal(new[] { true, true, false }); }
public void Twice() { var g = new MfGraphInt(3); g.AddEdge(0, 1, 1).Should().Be(0); g.AddEdge(0, 2, 1).Should().Be(1); g.AddEdge(1, 2, 1).Should().Be(2); g.Flow(0, 2).Should().Be(2); MfGraphInt.Edge e; e = new MfGraphInt.Edge(0, 1, 1, 1); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(0, 2, 1, 1); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(1, 2, 1, 1); g.GetEdge(2).Should().Be(e); g.ChangeEdge(0, 100, 10); e = new MfGraphInt.Edge(0, 1, 100, 10); g.GetEdge(0).Should().Be(e); g.Flow(0, 2).Should().Be(0); g.Flow(0, 1).Should().Be(90); e = new MfGraphInt.Edge(0, 1, 100, 100); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(0, 2, 1, 1); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(1, 2, 1, 1); g.GetEdge(2).Should().Be(e); g.Flow(2, 0).Should().Be(2); e = new MfGraphInt.Edge(0, 1, 100, 99); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(0, 2, 1, 0); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(1, 2, 1, 0); g.GetEdge(2).Should().Be(e); }
public void Bound() { MfGraphInt.Edge e; const int INF = int.MaxValue; var g = new MfGraphInt(3); g.AddEdge(0, 1, INF).Should().Be(0); g.AddEdge(1, 0, INF).Should().Be(1); g.AddEdge(0, 2, INF).Should().Be(2); g.Flow(0, 2).Should().Be(INF); e = new MfGraphInt.Edge(0, 1, INF, 0); g.GetEdge(0).Should().Be(e); e = new MfGraphInt.Edge(1, 0, INF, 0); g.GetEdge(1).Should().Be(e); e = new MfGraphInt.Edge(0, 2, INF, INF); g.GetEdge(2).Should().Be(e); }