摘要:Dinic是在Edmond_Karp上的优化,就是传说中的分层;分层听起来难理解,其实就是分级即给节点具有一定规则的标记,看一下实现就懂了!
        
阅读全文
 
    
        
        
摘要:哎~气死我了!昨天晚上都写好了……一不小心把网页关了,写的全没了……MD
        
阅读全文
 
    
        
        
摘要://-----------Tarjan-------------int dfn[MAXNODE],low[MAXNODE],index;int stack[MAXNODE],top;int id_scc[MAXNODE],cnt_scc;void Tarjan(int i){ int j; dfn[i]=low[i]=++index; stack[++top]=i; for(Node *p=G[i];p;p=p->next) { j=p->num; if(!dfn[j]) { Tarjan(j); ...
        
阅读全文
 
    
        
        
摘要:趁现在网速好点,再发个kosaraju算法吧
        
阅读全文
 
    
        
        
摘要:编辑器加载中...//------------Kruskal-------------struct Edge{ int v,u; int weight;}edge[M];//----Union_Find_Set---int ancestor[N],rank[N];void Sinit(int n){ for(int i=1;i<=n;i++) ancestor[i]=i,rank[i]=1;}int Sfind(int x){ if(ancestor[x]!=x) return ancestor[x]=Sfind(ancestor[x]); ...
        
阅读全文
 
    
        
        
摘要://------------Prim---------------int cost[N][N];int lowcost[N];int prenode[N];int Prim(int n){ int finalcost=0; int i,j,u,min; for(i=1;i<=n;i++) { lowcost[i]=cost[1][i]; prenode[i]=1; } lowcost[1]=-1; for(i=1;i<n;i++) { min=MAXCOST; for(j=1;j<=n;j+...
        
阅读全文
 
    
        
        
摘要://------------Floyd--------------int map[N][N];void Floyd(int n){ int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(map[i][k]+map[k][j]<map[i][j]) map[i][j]=map[i][k]+map[k][j];}///最好写了!
        
阅读全文
 
    
        
        
摘要://------------SPFA-------------#define MOVE(x) (x=(x+1)%n)int map[N][N];int queue[N],front,rear;int dist[N];bool flag[N];int record[N];bool SPFA(int n,int s){ int i,u; front=rear=0; for(i=1;i<=n;i++) { dist[i]=map[s][i]; flag[i]=false; if(dist[i]!=MAXDIST) { ...
        
阅读全文
 
    
        
        
摘要://-----------Bellman_Ford------------struct Edge{ int v,u; int weight;}edge[M];int dist[N];bool Bellman_Ford(int n,int m,int s){ int i,j; bool flag; for(i=1;i<=n;i++) dist[i]=MAXVAL; dist[s]=0; for(i=1;i<n;i++) { flag=false; for(j=0;j<m;j++) { ...
        
阅读全文
 
    
        
        
摘要://-----------Dijkstra-----------int map[N][N];int dist[N];bool flag[N];void Dijkstra(int n,int s){ int i,j,u; for(i=1;i<=n;i++) { dist[i]=map[s][i]; flag[i]=false; } flag[s]=true; for(i=1;i<n;i++) { u=s; for(j=1;j<=n;j++) { if(!flag[...
        
阅读全文