【代码随想录算法训练营——Day58】图论——117.软件构建、47. 参加科学大会

卡码网题目链接

https://kamacoder.com/problempage.php?pid=1191

https://kamacoder.com/problempage.php?pid=1047

题解
117.软件构建

(拓扑排序)

代码是完全照着题解的代码写的.

47.参加科学大会

(最短路)

代码

python 复制代码
#117.软件构建
from collections import defaultdict, deque
if __name__ == "__main__":
    n, m = map(int, input().split())
    inDegree = [0] * n
    umap = defaultdict(list)
    result = []
    for _ in range(m):
        s, t = map(int, input().split())
        inDegree[t] += 1
        umap[s].append(t)
    queue = deque()
    for i in range(n):
        if inDegree[i] == 0:
            queue.append(i)
    while queue:
        cur = queue.popleft()
        result.append(cur)
        files = umap[cur]
        for j in files:
            inDegree[j] -= 1
            if(inDegree[j] == 0):
                queue.append(j)
    if len(result) == n:
        for i in range(n - 1):
            print(f"{result[i]} ", end = "")
        print(result[n - 1])
    else:
        print(-1)
python 复制代码
#47.参加科学大会
if __name__ == "__main__":
    n, m = map(int, input().split())
    graph = [[float('inf')] * (n + 1) for _ in range(n + 1)]
    for i in range(m):
        s, e, v = map(int, input().split())
        graph[s][e] = v
    minDist = [float('inf')] * (n + 1)
    visited = [False] * (n + 1)
    start = 1
    end = n
    minDist[start] = 0
    for i in range(1, n + 1):
        minVal = float('inf')
        cur = 1
        for j in range(1, n + 1):
            if visited[j] == False and minDist[j] < minVal:
                minVal = minDist[j]
                cur = j
        visited[cur] = True
        for j in range(1, n + 1):
            if visited[j] == False and graph[cur][j] != float('inf') and minDist[cur] + graph[cur][j] < minDist[j]:
                minDist[j] = minDist[cur] + graph[cur][j]
    if minDist[end] == float('inf'):
        print(-1)
    else:
        print(minDist[end])
相关推荐
AI软著研究员8 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish8 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱9 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect1 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱1 天前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法