模板
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 · 1136 阅读 · 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 · 2198 阅读 · 2 评论 -
二分图匈牙利算法模板
最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长可以为0(即单个点)。 定理1:最大匹配数 = 最小点覆盖数(这是 Konig 定理) 定理2:最大匹配数 = 最大独立数 定理3:最小原创 2016-05-31 20:13:57 · 1443 阅读 · 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 · 1252 阅读 · 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 · 3185 阅读 · 0 评论 -
最大流模板(Dinic)
和最小费用流模板对比着看:最小费用流模板 贴上最大流模板: #include #include using 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 · 2426 阅读 · 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 · 3366 阅读 · 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 · 2830 阅读 · 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 · 1465 阅读 · 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 · 365 阅读 · 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 · 771 阅读 · 0 评论 -
最大公约数简洁代码
ll gcd(ll a,ll b) { return b? gcd(b,a%b):a; } 简洁版本的总是容易忘。。。。。放这儿容易找~~原创 2015-11-03 18:35:24 · 1426 阅读 · 2 评论