Struct steap_by_steap::digraph::Digraph
source · pub struct Digraph {
adj_list: HashMap<usize, Vec<usize>>,
}
Fields§
§adj_list: HashMap<usize, Vec<usize>>
Implementations§
source§impl Digraph
impl Digraph
fn new() -> Self
sourcefn add_edge(&mut self, u: usize, v: usize)
fn add_edge(&mut self, u: usize, v: usize)
Add an edge from node u to node v.
Parameters: u (int): The start node. v (int): The end node.
sourcefn dfs(&self, start: usize) -> Vec<usize>
fn dfs(&self, start: usize) -> Vec<usize>
Perform Depth-First Search (DFS) starting from a node.
Parameters: start (int): The start node.
Returns: List[int]: The nodes visited in DFS order.
sourcefn bfs(&self, start: usize) -> Vec<usize>
fn bfs(&self, start: usize) -> Vec<usize>
Perform Breadth-First Search (BFS) starting from a node.
Parameters: start (int): The start node.
Returns: List[int]: The nodes visited in BFS order.
sourcefn topological_sort(&self) -> Vec<usize>
fn topological_sort(&self) -> Vec<usize>
Perform topological sort on the graph.
Returns: List[int]: The nodes in topological order.
sourcefn kosaraju_sharir(&self) -> Vec<Vec<usize>>
fn kosaraju_sharir(&self) -> Vec<Vec<usize>>
Perform Kosaraju-Sharir algorithm to find strongly connected components.
Returns: List[List[int]]: A list of strongly connected components.
source§impl Digraph
impl Digraph
fn topological_sort_util( &self, node: usize, visited: &mut HashSet<usize>, stack: &mut Vec<usize> )
fn fill_order( &self, node: usize, visited: &mut HashSet<usize>, stack: &mut Vec<usize> )
fn transpose(&self) -> Digraph
fn dfs_util( &self, node: usize, visited: &mut HashSet<usize>, component: &mut Vec<usize> )
Trait Implementations§
source§impl HasPyGilRef for Digraph
impl HasPyGilRef for Digraph
§type AsRefTarget = PyCell<Digraph>
type AsRefTarget = PyCell<Digraph>
Utility type to make Py::as_ref work.
source§impl PyClassImpl for Digraph
impl PyClassImpl for Digraph
source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
#[pyclass(subclass)]
source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
#[pyclass(extends=…)]
source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
#[pyclass(mapping)]
source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
#[pyclass(sequence)]
§type ThreadChecker = SendablePyClass<Digraph>
type ThreadChecker = SendablePyClass<Digraph>
This handles following two situations: Read more
§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Immutable or mutable
§type Dict = PyClassDummySlot
type Dict = PyClassDummySlot
Specify this class has
#[pyclass(dict)]
or not.§type WeakRef = PyClassDummySlot
type WeakRef = PyClassDummySlot
Specify this class has
#[pyclass(weakref)]
or not.§type BaseNativeType = PyAny
type BaseNativeType = PyAny
The closest native ancestor. This is
PyAny
by default, and when you declare
#[pyclass(extends=PyDict)]
, it’s PyDict
.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
source§impl PyClassNewTextSignature<Digraph> for PyClassImplCollector<Digraph>
impl PyClassNewTextSignature<Digraph> for PyClassImplCollector<Digraph>
fn new_text_signature(self) -> Option<&'static str>
source§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a Digraph
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a Digraph
source§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a mut Digraph
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a mut Digraph
source§impl PyMethods<Digraph> for PyClassImplCollector<Digraph>
impl PyMethods<Digraph> for PyClassImplCollector<Digraph>
fn py_methods(self) -> &'static PyClassItems
source§impl PyTypeInfo for Digraph
impl PyTypeInfo for Digraph
source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Returns the PyTypeObject instance for this type.
source§fn type_object(py: Python<'_>) -> &PyType
fn type_object(py: Python<'_>) -> &PyType
👎Deprecated since 0.21.0:
PyTypeInfo::type_object
will be replaced by PyTypeInfo::type_object_bound
in a future PyO3 versionReturns the safe abstraction over the type object.
source§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
Returns the safe abstraction over the type object.
source§fn is_type_of(object: &PyAny) -> bool
fn is_type_of(object: &PyAny) -> bool
👎Deprecated since 0.21.0:
PyTypeInfo::is_type_of
will be replaced by PyTypeInfo::is_type_of_bound
in a future PyO3 versionChecks if
object
is an instance of this type or a subclass of this type.source§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
Checks if
object
is an instance of this type or a subclass of this type.source§fn is_exact_type_of(object: &PyAny) -> bool
fn is_exact_type_of(object: &PyAny) -> bool
👎Deprecated since 0.21.0:
PyTypeInfo::is_exact_type_of
will be replaced by PyTypeInfo::is_exact_type_of_bound
in a future PyO3 versionChecks if
object
is an instance of this type.impl DerefToPyAny for Digraph
Auto Trait Implementations§
impl Freeze for Digraph
impl RefUnwindSafe for Digraph
impl Send for Digraph
impl Sync for Digraph
impl Unpin for Digraph
impl UnwindSafe for Digraph
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more