/// <summary> /// 构造方法 /// </summary> /// <param name="adjacency"></param> /// <param name="s"></param> /// <param name="t"></param> public SingleSourcePath(IAdjacency adjacency, int s, int t) { _adjacency = adjacency; _adjacency.ValidateNumber(s); _adjacency.ValidateNumber(t); S = s; T = t; PreNodes = new int[_adjacency.V]; _visited = new bool[_adjacency.V]; for (int i = 0; i < PreNodes.Length; i++) { PreNodes[i] = -1; } Dfs(s, s); }
/// <summary> /// 两个顶点是否属于同一个连通分量 /// </summary> /// <param name="v"></param> /// <param name="w"></param> /// <returns></returns> public bool IsConnected(int v, int w) { _adjacency.ValidateNumber(v); _adjacency.ValidateNumber(w); return(_visited[v] == _visited[w]); }
/// <summary> /// 两个顶点是否连通 /// </summary> /// <param name="t"></param> /// <returns></returns> public bool IsConnected(int t) { _iaAdjacency.ValidateNumber(t); return(_visited[t]); }