图论
SSkinH
这个作者很懒,什么都没留下…
展开
-
最短路径问题Dijkstra&Floyd
过程:取出dist中没有被path标记的最短距离的节点(可以用优先级队列),添加该点的所有边,更新dist数组,循环往复,直到所有点都被标记(即循环N次)。邻接表:节点数为N,构造长度N的一维向量,每个数组元素存放一个链表(或pair<int,int>向量),串联所有与该节点相连的边的指向以及权重。具体:把起点放入队列,然后步数+1,向队列中加入当前步数可以访问到的节点,循环往复直到队列为空。邻接矩阵:节点数为N,构造N*N的二维矩阵,表示节点到节点间的距离。过程:外循环遍历中间点,内两层循环遍历所有点。原创 2024-04-01 13:57:58 · 212 阅读 · 1 评论 -
二分图题目
1. 遍历所有节点,把当前节点的临边节点放在一个集合里,因为当前节点一定要与临边节点在不同集合,也就是临边节点在同一个集合。如果边的两端节点已经属于同一个集合,就不是二分图。因为二分图的定义就是边的两端属于不同集合。2. 最后再检查一遍,当前节点 有没有和临边节点在同一个集合。如果访问过且颜色和源节点一样,就不是二分图。深度优先遍历,记录访问过的节点和颜色,遍历图节点。如果没访问过,就赋予不同的颜色。二分图:指每条边都连接着两个不同区域。边两端的节点不同颜色,只有两个颜色。遍历完没有冲突就是二分图。原创 2024-08-04 18:41:52 · 183 阅读 · 0 评论