图论
桃花仙人~
这个作者很懒,什么都没留下…
展开
-
奇偶游戏---带权并查集
奇偶游戏首先需要知道异或这种东西 两个数异或的结果是什么两个数按位做差的绝对值 异或相当于 模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 · 113 阅读 · 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]=0int n, m; //n个节点m条边int q[N]; //存储层次遍历序列 0号节点是编号为1的节点void add(int a, int b){ e[idx]=原创 2020-10-08 16:18:27 · 134 阅读 · 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 · 130 阅读 · 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 · 90 阅读 · 0 评论 -
bellman_frod---- 有边数限制的最短路
模板题此算法对所有边进行松弛操作,外循环进行N -1次解决那些规定最多只能经过K条边到达目标的问题比如,从 A地飞到B地 的最短路并且A到B转飞机的次数不能超过Kbellman_frod还可以解决负环问题,如果更新了n-1次路径还是很大,说明有负环,有负环就会导致没有最短路#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int ..原创 2020-10-05 21:19:44 · 133 阅读 · 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 · 153 阅读 · 0 评论