mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
895dffb412
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.291 → v0.0.292](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.291...v0.0.292) - [github.com/codespell-project/codespell: v2.2.5 → v2.2.6](https://github.com/codespell-project/codespell/compare/v2.2.5...v2.2.6) - [github.com/tox-dev/pyproject-fmt: 1.1.0 → 1.2.0](https://github.com/tox-dev/pyproject-fmt/compare/1.1.0...1.2.0) * updating DIRECTORY.md * Fix typos in test_min_spanning_tree_prim.py * Fix typos * codespell --ignore-words-list=manuel --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com> Co-authored-by: Christian Clauss <cclauss@me.com>
47 lines
1001 B
Python
47 lines
1001 B
Python
from collections import defaultdict
|
|
|
|
from graphs.minimum_spanning_tree_prims import prisms_algorithm as mst
|
|
|
|
|
|
def test_prim_successful_result():
|
|
num_nodes, num_edges = 9, 14 # noqa: F841
|
|
edges = [
|
|
[0, 1, 4],
|
|
[0, 7, 8],
|
|
[1, 2, 8],
|
|
[7, 8, 7],
|
|
[7, 6, 1],
|
|
[2, 8, 2],
|
|
[8, 6, 6],
|
|
[2, 3, 7],
|
|
[2, 5, 4],
|
|
[6, 5, 2],
|
|
[3, 5, 14],
|
|
[3, 4, 9],
|
|
[5, 4, 10],
|
|
[1, 7, 11],
|
|
]
|
|
|
|
adjacency = defaultdict(list)
|
|
for node1, node2, cost in edges:
|
|
adjacency[node1].append([node2, cost])
|
|
adjacency[node2].append([node1, cost])
|
|
|
|
result = mst(adjacency)
|
|
|
|
expected = [
|
|
[7, 6, 1],
|
|
[2, 8, 2],
|
|
[6, 5, 2],
|
|
[0, 1, 4],
|
|
[2, 5, 4],
|
|
[2, 3, 7],
|
|
[0, 7, 8],
|
|
[3, 4, 9],
|
|
]
|
|
|
|
for answer in expected:
|
|
edge = tuple(answer[:2])
|
|
reverse = tuple(edge[::-1])
|
|
assert edge in result or reverse in result
|