private bool check(UndirectedGraphNode a, UndirectedGraphNode b) { if (a == null || b == null) { return(false); } HashSet <int> set = new HashSet <int>(); Queue <UndirectedGraphNode> queue = new Queue <UndirectedGraphNode>(); queue.Enqueue(a); set.Add(a.label); while (queue.Count != 0) { UndirectedGraphNode tmp = queue.Dequeue(); if (tmp.label == b.label) { return(true); } set.Add(tmp.label); foreach (var i in tmp.neighbors) { if (i == null) { continue; } if (set.Contains(i.label)) { continue; } queue.Enqueue(i); } } return(false); }
public bool checkPath(UndirectedGraphNode a, UndirectedGraphNode b) { return(check(a, b) || check(b, a)); }