World Robot Contest2025-2026Algorithm Application ThemeJunior Highwrc.hao.work
WRC
Contest Archive / Structured Dossiers青少年算法应用训练档案馆

把训练题、知识点、执行证据和最终解题档案统一归档成可直接浏览的竞赛资料库。

Archive30 Cases

四大文化赛道完整展开

AccessHTTPS

完整题面 / 题解 / 运行证据

No Rounded CornersTailwind FirstDossier Ready
03-execution/run-001/source-snapshot/main.py

main.py

站内文件视图直接读取仓库内容,Markdown 使用文档排版渲染,其余文本文件保持原始排版,方便校对训练证据链。

文件类型.py

10-cases/s3-jh-02-caravan-plan/03-execution/run-001/source-snapshot/main.py

import heapq
import sys


def solve(data: str) -> str:
    tokens = list(map(int, data.split()))
    if not tokens:
        return ""
    it = iter(tokens)
    n = next(it)
    m = next(it)
    start = next(it)
    target = next(it)
    load = next(it)
    graph = [[] for _ in range(n + 1)]
    for _ in range(m):
        u = next(it)
        v = next(it)
        dist = next(it)
        capacity = next(it)
        risk = next(it)
        if capacity < load:
            continue
        graph[u].append((v, dist, risk))
        graph[v].append((u, dist, risk))
    inf = 10 ** 18
    best_dist = [inf] * (n + 1)
    best_risk = [inf] * (n + 1)
    prev = [-1] * (n + 1)
    best_dist[start] = 0
    best_risk[start] = 0
    heap = [(0, 0, start)]
    while heap:
        cur_dist, cur_risk, node = heapq.heappop(heap)
        if cur_dist != best_dist[node] or cur_risk != best_risk[node]:
            continue
        for nxt, dist, risk in graph[node]:
            nd = cur_dist + dist
            nr = cur_risk + risk
            if nd < best_dist[nxt] or (nd == best_dist[nxt] and nr < best_risk[nxt]):
                best_dist[nxt] = nd
                best_risk[nxt] = nr
                prev[nxt] = node
                heapq.heappush(heap, (nd, nr, nxt))
    if best_dist[target] == inf:
        return "min_distance=-1\ntotal_risk=-1\npath=IMPOSSIBLE"
    path = []
    cur = target
    while cur != -1:
        path.append(cur)
        cur = prev[cur]
    path.reverse()
    return "\n".join(
        [
            f"min_distance={best_dist[target]}",
            f"total_risk={best_risk[target]}",
            f"path={'->'.join(map(str, path))}",
        ]
    )


if __name__ == "__main__":
    sys.stdout.write(solve(sys.stdin.read()).strip())
    sys.stdout.write("\n")