【代码随想录算法训练营第六十三天|卡码网117.软件构造、47.参加科学大会】

117.软件构造

本体考察的是拓扑排序的思路,对于所有的有向无环图进行拓扑排序后输出的长度一定是和原结点数相同的。整体思路是找到当前所有的入度为0的结点,添加到结果中,并且查看对应的后续结点将其入度减1,如果减完之后入度为0,那就也添加到待处理结点中,直到找不到符合条件的待处理结点。最后查看结果长度与结点数是否一致,一致的话输出,不一致说明无法满足条件。

import collections
N, M = map(int, input().split())
inDegree = [0] * N
umap = [[] for _ in range(N)]
for i in range(M):
    s, t = map(int, input().split())
    inDegree[t] += 1
    umap[s].append(t)
queue = collections.deque()
for i in range(N):
    if inDegree[i] == 0:
        queue.append(i)
result = []
while queue:
    cur = queue.popleft()
    result.append(cur)
    for file in umap[cur]:
        inDegree[file] -= 1
        if inDegree[file] == 0:
            queue.append(file)
if len(result) == N:
    print(' '.join(map(str, result)))
else:
    print(-1)

47.参加科学大会

本题使用的是dijkstra算法,和prim基本一致,唯一不同的是minDist数组中存放的不是到每个结点到已经访问结点的最小距离,而是距离源点的最小距离,别的都是一致的。

n, m = map(int, input().split())
grid = [[float('inf')] * (n+1) for _ in range(n+1)]
for i in range(m):
    s, t, v = map(int, input().split())
    grid[s][t] = v
start = 1
end = n 
visited = [False] * (n+1)
minDist = [float('inf')] * (n+1)
minDist[start] = 0
for i in range(n):
    minVal = float('inf')
    for i in range(1, n+1):
        if minDist[i] < minVal and not visited[i]:
            minVal = minDist[i]
            cur = i 
    visited[cur] = True
    for i in range(1, n+1):
        if not visited[i] and grid[cur][i]!=float('inf') and minDist[cur]+grid[cur][i] < minDist[i]:
            minDist[i] = minDist[cur] + grid[cur][i]
if minDist[end] < float('inf'):
    print(minDist[end])
else:
    print(-1)

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 07:34:07       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 07:34:07       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 07:34:07       57 阅读
  4. Python语言-面向对象

    2024-07-11 07:34:07       68 阅读

热门阅读

  1. anaconda创建虚拟环境,指定路径

    2024-07-11 07:34:07       23 阅读
  2. npm、cnpm、pnpm、yarn的区别

    2024-07-11 07:34:07       22 阅读
  3. 使用标识符快捷登录远程SSH服务器

    2024-07-11 07:34:07       23 阅读
  4. ArcGIS Pro SDK (八)地理数据库 5 编辑

    2024-07-11 07:34:07       22 阅读
  5. 自动驾驶论文总结

    2024-07-11 07:34:07       27 阅读
  6. Django 视图 - FBV 与 CBV

    2024-07-11 07:34:07       20 阅读
  7. Qt编程技巧小知识点(1)TCP缓存区数据读取

    2024-07-11 07:34:07       19 阅读
  8. uniapp小程序连接蓝牙设备

    2024-07-11 07:34:07       19 阅读