SSpanSorbus
ワークフロー

コーディングのワークフロー · 無向グラフの橋辺

03
製品

ワークフロー

最大32頂点の単純無向グラフから橋を求めます。非連結成分と閉路を確認し、入力を変えず重複辺・自己ループ・無効な端点を拒否します。

01

アプリをダウンロード

フォルダーを選び、編集前に関連ファイルを読むようアシスタントに依頼します。作業の目的と変更範囲を明確にしてください。

02

プロジェクトフォルダーを開く

対応するエンドポイントを選択します。利用できるツールや回答品質は、設定したモデルとサーバーに依存します。

03

モデルを接続してテスト

変更内容とコマンド出力を確認します。結果を採用する前にプロジェクトの検証を実行してください。生成コードが自動的にテスト済みになるわけではありません。

04

変更を確認しテストを実行

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

無向グラフの橋辺

ワークフロー
def bridge_edges(n, edges):
    if type(n) is not int or not 0 <= n <= 32:
        raise ValueError("vertex count")
    if type(edges) is not list or len(edges) > 496:
        raise ValueError("edge count")
    graph = [set() for _ in range(n)]
    for edge in edges:
        if type(edge) is not tuple or len(edge) != 2 or any(
            type(x) is not int or not 0 <= x < n for x in edge):
            raise ValueError("edge endpoints")
        a, b = edge
        if a == b or b in graph[a]:
            raise ValueError("simple undirected edges")
        graph[a].add(b); graph[b].add(a)
    timer, found = 0, []
    entered, low = [-1] * n, [0] * n
    def visit(v, parent):
        nonlocal timer
        entered[v] = low[v] = timer; timer += 1
        for u in sorted(graph[v]):
            if u == parent:
                continue
            if entered[u] < 0:
                visit(u, v); low[v] = min(low[v], low[u])
                if low[u] > entered[v]:
                    found.append(tuple(sorted((v, u))))
            else:
                low[v] = min(low[v], entered[u])
    for v in range(n):
        if entered[v] < 0:
            visit(v, -1)
    return sorted(found)

適用前に確認. 変更内容とコマンド出力を確認します。結果を採用する前にプロジェクトの検証を実行してください。生成コードが自動的にテスト済みになるわけではありません。

AIコーディングワークスペース

次のアイデアはここから。

Windows版をダウンロード ↗