
图论
文章平均质量分 71
cstirling
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
求点连通度,边连通度
图的连通度分为点连通度和边连通度: (1)点连通度:只许删点,求至少要删掉几个点(当然,s和t不能删去,这里保证原图中至少有三个点); (2)边连通度:只许删边,求至少要删掉几条边。 并且,有向图和无向图的连通度求法不同,因此还要分开考虑(对于混合图,只需将其中所有的无向边按照 无向图的办法处理、有向边按照有向图的办法处理即可)。 【1】有向图的边连通度: 这转载 2016-07-24 10:28:20 · 14365 阅读 · 0 评论 -
最短路模板
dijkstra+heap优化 int n,m,vis[N]; vector >g[N]; ll dis[N]; void Dijkstra(int s) { priority_queue >q; memset(dis,127,sizeof(dis)); memset(vis,0,sizeof(vis)); q.push(MP(0,s)); dis[s]=原创 2017-01-09 19:16:42 · 366 阅读 · 0 评论 -
tarjan&&LCA模板
//求强连通分量 int n,m; int dfn[N],low[N],instk[N],sccno[N],index,scc_cnt; stack stk; vector e[N],scc[N]; void Init() { for(int i=0;i<N;i++) dfn[i]=low[i]=sccno[i]=instk[i]=0; memset(e,0,siz原创 2017-01-02 18:51:55 · 433 阅读 · 0 评论 -
最大流Dinic模板
const int N=210; const int M=40010*2; const int inf=0x3f3f3f3f; struct Edge { int v,cap,nxt; }e[M]; int src,des,dis[N],head[N],ecnt; int n,m; void Addedge(int u,int v,int w) { e[ecnt].v=v;原创 2017-04-27 12:40:06 · 503 阅读 · 0 评论 -
树链剖分&树状数组区间加减区间求和模板
#pragma comment(linker,"/STACK:100000000,100000000") #include #include #include #include using namespace std; const int N=50010; #define ll long long int n,m,p,a[N]; int ti[N],idx,par[N],son[N],sz[N],原创 2017-04-26 22:55:48 · 441 阅读 · 0 评论 -
二分图匹配模板
二分图最大匹配 ①Hopcroft-Carp算法 时间复杂度O(sqrt(n)*m) struct edge { int v,nxt; }e[M]; int n,m; int head[N],e_cnt; int mx[N],my[N],dx[N],dy[N],vis[N],dis; queue q; void Init() { e_cnt=0; memset(v原创 2017-01-09 22:42:18 · 506 阅读 · 0 评论 -
最小生成树模板
Kruskal struct edge { int u,v,w; edge(int _u=0,int _v=0,int _w=0):u(_u),v(_v),w(_w){} bool operator < (edge t) const {return w<t.w;} }e[M]; int n,m;//n是点数,m是边数,点编号从1开始,边编号从0开始 int par[N];原创 2017-01-02 17:57:45 · 501 阅读 · 0 评论 -
HDU 3594 Cactus 【强连通】
题目:点击打开链接 题意:求一个图是否为仙人掌图 分析: 仙人掌图的详细说明见链接:点击打开链接 总结下来仙人掌图有三点性质: ①没有横向边 ②对于父节点u和其所有子节点v,low[v] ③对于父节点u和其所有子节点v,low[v] 对于性质①,可以在dfs时,对于每次引出的一个v,判断dfn[v]>dfn[u]是否成立,若成立,则表示点v是之前已经遍历过的一个点且v是u的一个后继原创 2016-12-08 13:55:56 · 307 阅读 · 0 评论 -
CodeForces 734E Anton and Tree 【连通缩点】
题目:点击打开链接 题意:给出n个点,n-1条边构成一棵生成树,每个点都有黑白两种颜色,每次改变颜色都能使同颜色的相邻点改变颜色,求最小改变颜色的次数 分析:因为每次改变颜色都能使同颜色的相邻点改变颜色,所以相邻且颜色相同的点可以缩成一点,重新建图,构成黑白相间的点的树,设树的直径(任意两点的最远距离)为d,因为每次改变颜色都会使它与相邻的点的颜色相同,所以取树的直径上的点操作,共有d+1个点原创 2016-11-18 16:16:41 · 799 阅读 · 0 评论 -
KM算法模板(HDU 2255)
#include #include #include #include #include #include #include #include #include #include #include #define PR pair #define MP make_pair #define fi first #define se second #define lson l,m,r原创 2016-09-26 16:30:48 · 305 阅读 · 0 评论 -
最小割Stoer-Wagner算法模板hdu3691
全局最小割SW算法原创 2016-07-24 10:05:13 · 328 阅读 · 0 评论 -
最小费用流模板
const int N=510; const int M=1010; const ll INF=0x3f3f3f3f3f3f3f3f; struct Edge { int u,v,nxt; ll cap,flow,cost; }g[M*6]; int n,m,cnt; int maxflow,p[N],head[N]; ll d[N],mincost; void Addedge(i原创 2016-09-26 16:48:57 · 292 阅读 · 0 评论