图论
图论各种模板
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 · 1141 阅读 · 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 · 1258 阅读 · 0 评论 -
二分图匈牙利算法模板
最大匹配数:最大匹配的匹配边的数目最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择最大独立数:选取最多的点,使任意所选两点均不相连最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长可以为0(即单个点)。定理1:最大匹配数 = 最小点覆盖数(这是 Konig 定理)定理2:最大匹配数 = 最大独立数定理3:最小原创 2016-05-31 20:13:57 · 1453 阅读 · 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 · 3375 阅读 · 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 · 2434 阅读 · 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 · 3201 阅读 · 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 评论 -
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 · 2837 阅读 · 0 评论 -
poj1273(最大流)
DescriptionEvery time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to原创 2015-08-23 12:21:02 · 572 阅读 · 0 评论 -
poj3159(spfa)
DescriptionDuring the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of flymouse’s class a large bag of candies and had flymouse distr原创 2015-08-20 19:08:41 · 517 阅读 · 0 评论 -
hdu1599(floyd算法讲解)
Description杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区。现在8600需要你帮他找一条这样的路线,并且花费越少越好。 Input第原创 2015-08-19 21:32:50 · 1324 阅读 · 2 评论 -
hdu2063二分图(匈牙利算法模板)
过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16349 Accepted Submission(s): 7159Problem DescriptionRPG girls今天和大家一起去游乐场玩原创 2016-03-10 10:17:30 · 440 阅读 · 0 评论 -
poj2438(哈密顿图)
Children's DiningTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 4438 Accepted: 642 Special JudgeDescriptionUsually children in kindergarten like原创 2016-03-19 20:00:55 · 523 阅读 · 0 评论 -
poj2230(欧拉回路模板)
WatchcowTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 6887 Accepted: 3004 Special JudgeDescriptionBessie's been appointed the new watch-cow for原创 2016-04-11 19:54:27 · 1426 阅读 · 6 评论 -
最小生成树模板(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 · 775 阅读 · 0 评论 -
hdu4411(最小费用流)
ArrestTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1742 Accepted Submission(s): 691Problem DescriptionThere are (N+1) citi原创 2016-04-12 19:29:05 · 620 阅读 · 0 评论