图论
adorkable_
这个作者很懒,什么都没留下…
展开
-
模板整理——图论·最短路·spfa
思想:每次取出队首u,弹出队首,松弛它的出边,并把u本次松弛的出边连接的未入队的点入队,若一个点入队次数超过n,说明有负权圈 时间复杂度:O(m*k)[k是常数,听说是2or3,然而我并不清楚] 那就假设是对的吧…… queue <int> q; bool spfa(int s) { for (int i=1; i<=n; i++) dis[i]=oo; ...原创 2017-09-27 20:59:05 · 216 阅读 · 0 评论 -
模板整理——图论·最小生成树·Kruskal
思想:把所有边按权值从小到大排序,每次取最小的未处理边e,若e连接的两个点u,v不在同一集合,则将e加入最小生成树,将u,v放入同一集合(并查集),一共需要加入n-1条边 时间复杂度:O(mlgm)#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using names原创 2017-10-26 22:40:09 · 239 阅读 · 0 评论 -
模板整理——图论·最短路·dijkstra+堆
思想:每次选择当前dis最小的点,更新其出边 时间复杂度:(n+m)logn typedef pairlong long,int> pa; priority_queuevector,greater > q; void dijkstra(int s) { for (int i=1; i//不要忘记清空 dis[s]=0; q.push(pa(0,s));原创 2017-09-24 20:24:24 · 267 阅读 · 0 评论