title: What does the argument 'weak' or 'strong' do for scipy.sparse.csgraph.connected_components?
body: <p>The below code demonstrates that the directed graph:</p>
  
  <pre><code>Nodes: 0, 1, 2
  Edges: [0 -&gt; 1], [2 -&gt; 1]
  </code></pre>
  
  <p>is considered to be one weakly connected component, and three strongly connected components.</p>
  
  <pre><code>assert(scipy.sparse.csgraph.connected_components(np.array([[0,1,0], [0,0,0], [0,1,0]]), directed=True, connection='weak', return_labels=True) == (1, array([0, 0, 0], dtype=int32)))
  
  assert(scipy.sparse.csgraph.connected_components(np.array([[0,1,0], [0,0,0], [0,1,0]]), directed=True, connection='strong', return_labels=True) == (3, array([1, 0, 2], dtype=int32)))
  </code></pre>
  
  <p>I understand why the strongly connected component return value makes sense -- I cannot traverse from 0 to 2, nor from 1 to 0 or from 1 to 2.</p>
  
  <p>But according to the docs:</p>
  
  <pre><code>directedbool, optional
      If True (default), then operate on a directed graph: only move
      from point i to point j along paths csgraph[i, j]. If False,
      then find the shortest path on an undirected graph: the
      algorithm can progress from point i to j along csgraph[i, j]
      or csgraph[j, i].
  
  connectionstr, optional    
      [‘weak’|’strong’]. For directed graphs, the type of connection
      to use. Nodes i and j are strongly connected if a path exists
      both from i to j and from j to i. Nodes i and j are weakly
      connected if only one of these paths exists. If directed ==
      False, this keyword is not referenced.
  </code></pre>
  
  <p>The 'weak' connected component should not exist, because 2 is not reachable by 1 nor 1 reachable by 2.</p>
  
  <p>What's going on here? Is the documentation correct?</p>