算法代码
文章平均质量分 93
feicx
这个作者很懒,什么都没留下…
展开
-
超级快的读入优化实现
namespace IO { const int MX = 4e7; //1e7占用内存11000kb char buf[MX]; int c, sz; void begin() { c = 0; sz = fread(buf, 1, MX, stdin); } inline bool read(int &t) {转载 2017-08-17 08:10:48 · 879 阅读 · 0 评论 -
图论网络流入门增广路算法详解与实现
讲解对于求一个图起点到终点的最大网络流。我们可以利用增广路来求。将图的容量初始化,注意:读入边的信息时,必须只能单向读入,这是为了更好的增加残余网络的反向弧。对图所有的流量均初始化为0。首先我们应该寻找增广路,对于寻找一条增广路,我们可以这样做:第一步:我们首先通过广度搜索或者深度搜索来求出这个图的其中一条路径。并用Pre数组记录前驱。 第二步:我们可以通过求出此路径的残...原创 2017-08-16 20:00:06 · 3440 阅读 · 1 评论 -
并查集模板代码实现(非递归)
题目描述如题,现在有一个并查集,你需要完成合并和查询操作。输入输出格式输入格式:第一行包含两个整数N、M,表示共有N个元素和M个操作。接下来M行,每行包含三个整数Zi、Xi、Yi当Zi=1时,将Xi与Yi所在的集合合并当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N输出格式:如上,对于每一个Zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N输入输出样例输入样例#...原创 2017-08-04 21:55:01 · 703 阅读 · 0 评论 -
进制转换(十进制转换N进制)的实现
进制转换核心代码:string Zhuanh(int x,int n){ string s; while(x){ int u=x%n; if(x%n>9) s.push_back(u-10+'A'); else s.push_back(u+'0'); x/=n; } for(int i=0;i<s.length()/2;i++){ swap(s[...原创 2017-08-14 10:47:07 · 785 阅读 · 0 评论 -
SPFA单源最短路算法—vector模拟邻接表实现
#include#include#include#includeusing namespace std;struct node{ long long int v,w;};vector head[10010];const int inf=0xfffffff;long long int n,m,s,dis[10010];int cx[10010]; bool b[10010]原创 2017-08-07 08:36:23 · 447 阅读 · 0 评论 -
POJ2001 Shortest Prefixes 动态字典树实现
#include#include#include#includeusing namespace std;struct node{ int word; struct node *next[30]; node();};node::node(){ memset(next,0,sizeof(next)); word=0;}struct node *head=new nod原创 2017-08-04 20:06:41 · 199 阅读 · 0 评论 -
单源最短路Dijkstra算法源码
#include#include#includeusing namespace std;int a[1010][1010];int dis[1010];bool b[1010];const int inf=0xfffffff;int m,n,s;int add(int x,int y){ if(x+y>inf) return inf; retu原创 2017-08-07 12:18:23 · 396 阅读 · 0 评论 -
Kosaraju缩点算法详解
相对于Tarjan算法,Kosaraju算法更容易理解,原理非常简单,就是对一张有向图进行两次DFS遍历。下面我们用一张图作为实例,讲解Kosaraju算法的实现过程:这是一张有向图,对于强连通分量,我们一眼就看出来了,而机器有没有眼睛,那怎么识别呢?首先我们以从一号到五号节点顺序进行DFS,我们用dfn数组记录dfs访问退出的记录。遍历之后记录,我们记录下先后退出记录为 [5...原创 2018-08-03 16:43:49 · 2170 阅读 · 0 评论