
图论
桃花仙人~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
奇偶游戏---带权并查集
奇偶游戏 首先需要知道异或这种东西 两个数异或的结果是什么 两个数按位做差的绝对值 异或相当于 模2 做加法 只看最后一位 例如 5(101)^3(011)只看最后以为为0 就是偶数,奇数加奇数为偶数,这一题用到此方法 1个数异或自己为0 一个数异或0 还是自己 定义s[i】 为前i个数又多少个奇数1 如果L~R有奇数个1 说明 s【R】-s【L-1】为奇数 说明 s【R】跟s【L】不同类(一个奇数一个偶数) 反之如果有偶数个1 说明 s【R】跟s【L】同...原创 2020-11-15 20:18:51 · 153 阅读 · 0 评论 -
图中点的层次
图中点的层次 #include <cstring> #include <iostream> using namespace std; const int N=1e5+10; int h[N], e[N], idx, ne[N]; int d[N]; //存储每个节点离起点的距离 d[1]=0 int n, m; //n个节点m条边 int q[N]; //存储层次遍历序列 0号节点是编号为1的节点 void add(int a, int b) { e[idx]=原创 2020-10-08 16:18:27 · 160 阅读 · 0 评论 -
有向图的拓扑序列
有向图的拓扑序列 这题最特别的一点就是用到了数组模拟队列 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=1e5+10; int e[N],ne[N],h[N],idx,d[N],n,m; int q[N]; void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; }原创 2020-10-08 15:58:33 · 162 阅读 · 0 评论 -
spfa--大部分情况下最优秀的求最短路问题的算法
spfa是从bellman算法优化过来的 bellman算法是对每天边都进行松弛操作,但其中大部分松弛操作是没有意义的, 假如a->b权值w,只有a的前驱变化了,对a->b进行松弛才会有意义, 所以,如果对一个点松弛成功,则将他的其他边加入队列进行后续松弛, spfa求最短路 #include<iostream> #include<algorithm> #include<cstring> #include<queue> using na原创 2020-10-05 21:29:24 · 115 阅读 · 0 评论 -
bellman_frod---- 有边数限制的最短路
模板题 此算法对所有边进行松弛操作,外循环进行N -1次 解决那些规定最多只能经过K条边到达目标的问题 比如,从 A地飞到B地 的最短路并且A到B转飞机的次数不能超过K bellman_frod还可以解决负环问题,如果更新了n-1次路径还是很大,说明有负环,有负环就会导致没有最短路 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int ..原创 2020-10-05 21:19:44 · 162 阅读 · 0 评论 -
最短路,dijkstra算法,朴素版+堆优化
朴素版 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=505; int dis[N],g[N][N],n,m; bool st[N]; int disjtra() { memset(dis,0x3f,sizeof dis); dis[1]=0; for(int i=0;i<n-1;i++) {原创 2020-10-05 19:42:44 · 183 阅读 · 0 评论