-
Notifications
You must be signed in to change notification settings - Fork 0
/
WeightedEdge.cs
41 lines (33 loc) · 1.12 KB
/
WeightedEdge.cs
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
using System;
namespace LeetCode
{
public class WeightedEdge<TVertex, TWeight> : IComparable<WeightedEdge<TVertex, TWeight>> where TWeight : IComparable<TWeight>
{
private readonly TVertex vertex1;
private readonly TVertex vertex2;
public WeightedEdge(TVertex vertex1, TVertex vertex2, TWeight weight)
: this(vertex1, vertex2, weight, default(TVertex)) {}
public WeightedEdge(TVertex vertex1, TVertex vertex2, TWeight weight, TVertex id)
{
Id = id;
this.vertex1 = vertex1;
this.vertex2 = vertex2;
Weight = weight;
}
public TVertex Id { get; private set; }
public TWeight Weight { get; private set; }
public int CompareTo(WeightedEdge<TVertex, TWeight> other) => Weight.CompareTo(other.Weight);
public TVertex GetTheOtherVertex(TVertex vertex)
{
if (vertex.Equals(vertex1))
{
return vertex2;
}
else
{
return vertex1;
}
}
public TVertex GetVertex() => vertex1;
}
}