![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
martinue
攻城狮
展开
-
求割边模板(tarjan)
网上几乎没有求割边的代码…所以我写了个。写的比较简洁,用的前向星,求割边,输出的地方表示一条割边。const int N=110;struct data{ int to,next;} tu[N*N];int head[N],low[N],dfn[N];int ip;int step;void init(){ ip=0; step=1;///遍历的原创 2016-06-07 20:20:13 · 1140 阅读 · 0 评论 -
求割点模板(tarjan算法思路)
想看更多模板,请点击:http://blog.csdn.net/martinue/article/category/6268283贴上求割点模板:const int N=110;struct data{ int to,next;} tu[N*N]原创 2016-05-04 14:08:47 · 2207 阅读 · 2 评论 -
二分图匈牙利算法模板
最大匹配数:最大匹配的匹配边的数目最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择最大独立数:选取最多的点,使任意所选两点均不相连最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长可以为0(即单个点)。定理1:最大匹配数 = 最小点覆盖数(这是 Konig 定理)定理2:最大匹配数 = 最大独立数定理3:最小原创 2016-05-31 20:13:57 · 1451 阅读 · 0 评论 -
最短路模板(floyed,spfa)
floyd:for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) tu[i][j]=min(tu[i][j],tu[i][k]+tu[k][j]);floyd判断最小环:int min0=maxn;for(int k=1;k<=n;k原创 2016-06-12 20:50:49 · 1255 阅读 · 0 评论 -
tarjan模板(缩点,求有向图强连通分量)
整理出了这个tarjan模板,具体数组的功能代码都有注释。const int N=100010;struct data{ int to,next;} tu[N*2];int head[N];int ip;int dfn[N], low[N];///dfn[]表示深搜的步原创 2016-05-04 15:53:49 · 3198 阅读 · 0 评论 -
最大流模板(Dinic)
和最小费用流模板对比着看:最小费用流模板贴上最大流模板:#include#includeusing namespace std;const int oo=1e9;/**oo 表示无穷大*/const int mm=111111111;/**mm 表示边的最大数量,记住要是原图的两倍,在加边的时候都是双向的*/const int mn=999;/**mn 表示点的最大数量*/int node,src,原创 2016-05-30 18:01:11 · 2433 阅读 · 0 评论 -
最小费用流模板
和最大流模板对比着看:最大流模板(Dinic)贴上最小费用流模板:const int oo=1e9;const int mm=11111111;const int mn=888888;int node,src,dest,edge;int ver[mm],flow[mm],cost[mm],nex[mm];int head[mn],dis[mn],p[mn],q[mn]原创 2016-05-30 18:02:58 · 3371 阅读 · 0 评论 -
KM算法模板
这个模板是图论书上的那个,书上的代码有错误,在网上各种查找之后finally把这个模板搞对了!match[]数组保存匹配上的左右集合,是对应坐标的,在函数里面开的那个l[]数组是存每个点的具体匹配流量。const int inf=1e9,maxn=510;int KM(int m,int n,int tu[][maxn],int *match1,int *match2){ int原创 2016-04-26 21:18:23 · 2835 阅读 · 0 评论 -
次小生成树模板(kruskal)
kruskal版的次小生成树。struct data{ int a,b,w; bool vis;///初始化0} p[20010];vectorg[110];int f[110],len[110][110];const int oo=1e9;bool cmp(data a,data b){ if(a.w!=b.w) return原创 2016-10-10 20:05:23 · 1470 阅读 · 0 评论 -
欧拉函数模板
欧拉函数:设oula(i)为i对应的欧拉函数值,那么oula(i)=i*(1-1/p1)*(1-1/p2)*(1-1/p3)*……*(1-1/pn)(这是定理,我们也不需要去推导了。。大师推出来的结果比我们准确得多,会用就行)其中,p1,p2,p3,……,pn为i的素因子,就是将i素因子分解之后得到的所有因子。那么,得出代码:int oula(int n){原创 2016-01-18 17:16:15 · 369 阅读 · 0 评论 -
最小生成树模板(prim前向星)
别人都是先学prim再学kruskal,我刚好反了。。。。bool p[maxn];///maxn是点的个数,p记录状态int dist[maxn];///dist记录最短边长int pre[maxn];///pre记录连接信息void prim(int n){ for(int i=1; i<=n; i++)dist[i]=mmax; for(int i=head[1]; i!=-1原创 2016-04-11 21:48:51 · 773 阅读 · 0 评论 -
最大公约数简洁代码
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}简洁版本的总是容易忘。。。。。放这儿容易找~~原创 2015-11-03 18:35:24 · 1433 阅读 · 2 评论