code: def RS(S, second_pass=False):
      
      if not isspmatrix_csr(S):
          raise TypeError('expected csr_matrix')
      S = remove_diagonal(S)
  
      T = S.T.tocsr()  # transpose S for efficient column access
      splitting = np.empty(S.shape[0], dtype='intc')
      influence = np.zeros((S.shape[0],), dtype='intc')
  
      amg_core.rs_cf_splitting(S.shape[0],
                               S.indptr, S.indices,
                               T.indptr, T.indices,
                               influence,
                               splitting)
      if second_pass:
          amg_core.rs_cf_splitting_pass2(S.shape[0], S.indptr,
                                         S.indices, splitting)
  
      return splitting
docs: Compute a C/F splitting using Ruge-Stuben coarsening
  
      Parameters
      ----------
      S : csr_matrix
          Strength of connection matrix indicating the strength between nodes i
          and j (S_ij)
      second_pass : bool, default False
          Perform second pass of classical AMG coarsening. Can be important for
          classical AMG interpolation. Typically not done in parallel (e.g. Hypre).
  
      Returns
      -------
      splitting : ndarray
          Array of length of S of ones (coarse) and zeros (fine)
  
      Examples
      --------
      >>> from pyamg.gallery import poisson
      >>> from pyamg.classical import RS
      >>> S = poisson((7,), format='csr') # 1D mesh with 7 vertices
      >>> splitting = RS(S)
  
      See Also
      --------
      amg_core.rs_cf_splitting
  
      References
      ----------
      .. [1] Ruge JW, Stuben K.  "Algebraic multigrid (AMG)"
         In Multigrid Methods, McCormick SF (ed.),
         Frontiers in Applied Mathematics, vol. 3.
         SIAM: Philadelphia, PA, 1987; 73-130.