1. if 实现集合的划分

比如著名的 Prim 算法(最小生成树),从某一确定的点出发,每次新加入的点,都是在已访问过的结点(u∈U)和未访问过(v∈V−U)的结点之间的边。这里的未被访问(V−U)该如何实现呢?

可以使用集合(set)及其各种操作,也可以简单地使用 if + 状态进行判断:

mst = [None]*vnum
# mst 为 None 表示尚未被访问
count = 0
cands = PrioQueue([0, 0, 0])
while count < vnum and not cands.is_empty():
w, u, v = cands.dequeue()
if mst[v]:
continue
mst[v] = ((u, v), w)
for vi, w in graph.out_edges(v):
if !mst[vi]:
cands.enqueue((w, v, vi))

最新文章

  1. 最新win7系统64位和32位系统Ghost装机稳定版下载
  2. 计时器js
  3. Gradle笔记系列(一)
  4. C++中有符号/无符号数比较
  5. springmvc+spring+mybatis分页查询实例版本3,添加条件检索
  6. ORACLE 基础知识积累
  7. Logback日志使用详解
  8. 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)
  9. maven将本地jar包导入本地仓库
  10. android studio2.0出现的gradle问题,instant Run即时运行不了.
  11. P3047 [USACO12FEB]附近的牛Nearby Cows
  12. flutter image_picker使用照相机
  13. ORA-00444: background process DBRM failed while starting
  14. 开源性能测试工具Locust使用篇(二)
  15. .NetCore实践篇:分布式监控系统zipkin踩坑之路(二)
  16. ES系列十二、ES的scroll Api及分页实例
  17. Oracle 11G 安装图文教程
  18. 十、springcloud之Consul注销实例
  19. bzoj 2957 楼房重建 分块
  20. Spark Streaming资源动态分配和动态控制消费速率

热门文章

  1. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
  2. Spring学习总结(3)——Spring配置文件详解
  3. UVA10269 Adventure of Super Mario(Floyd+DP)
  4. ArcGIS api for javascript——加载图标
  5. 从头认识java-18.2 主要的线程机制(5)-守护线程与非守护线程
  6. swift 笔记 (十一) —— 方法(类,结构体,枚举)
  7. WordPress改动新用户注冊邮件内容--自己定义插件
  8. 【POJ3377】Ferry Lanes 最短路
  9. 如何卸载visualsvn for visual studio
  10. Android Design Support Library初探,NavigationView实践