zoukankan      html  css  js  c++  java
  • 最短路径模板总结

    dis[u][v]=w[u][v]||0x7ffffffff;
    for(k=1;k<=n;k++)
      for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            if(dis[i][j]>dis[i][k]+dis[k][j])
              dis[i][j]=dis[i][k]+dis[k][j];
        }
    
    /*Floyed-Warshall*/
    
    
    b[s]=1;c[s]=0;
    for(i=1;i<=n-1;i++){
        k=0;
        minl=maxx;
        for(j=1;j<=n;j++)
            if(!b[j]&&c[j]<minl)
            {
                k=j;
                minl=f[i][j];
            }
            if(k==0) break;
            b[k]=1;
            for(j=1;j<=n;j++)
              if(c[k]+f[k][j]<c[j])
              c[j]=c[k]+f[k][j];
        
    }
    
    /*dijkstra*/
    
    dis[i-n]=oo;
    dis[s]=0;
    for(int i=1;i<=n-1;i++)
      for(int j=1;j<=E;j++)
        if(dis[u]+w[j]<dis[v])
          {
          dis[v]=dis[u]+w[j];
          pre[v]=u;}
    
    /*bellman-ford*/
    
    
    pre[v]=u;
    pre[s]=0;
    printf("%d",s);
    void print(int x)
    {
        if(pre[x]==0)return;
        printf(pre[x]);
        printf("-->%d",x);
    } 
    
    q[1001],tail,head;
    dis[801];
    b[101];
    w[1001][1001]//邻接矩阵 
    a[1001][1001]//出度是多少,出度是谁 
    
    dis[s]=0;
    q[1]=i;
    tail=1;head=0;
    b[s]=1;
     
     a[i][++a[i][0]]=j;
     
    do
    {
        head++;
        head=((head-1)%1001)+1;
        u=team[head];
        b[u]=0; 
        for(int i=1;i<=a[u][0];i++) 
        {
            if(dis[i]>dis[u]+w[u][a[u][i]])
            {
                dis[i]=dis[u]+w[u][a[u][i]];
                if(!b[a[u][j]])
                {
                    tail++;
                    tail=((tail-1)%1001)+1;
                    q[tail]=a[u][j];
                    b[a[u][j]]=1;
                }
            }    
        }
    }while(head!=tail);
    
    
    /*SPFA*/
    
    
    /*单原点输出路径*/
    
    pre[i][j]=pre[k][j];
    pre[a][a]=0;
    printf("%d",a);
    int ptint(int x)
    {
        if(pre[a][x]==0);return ;
        print(prea[a][x]);
        printf("--》%d",pre[a][x])
    } 
    
    /*多原点输出路径*/

    我爱我自己?!!

  • 相关阅读:
    2019年8月7日 封装 7夕快乐
    2019年8月4日 多态 苗苗苗苗苗
    2019年7月31日 选课系统
    字符串类型的输入输出
    getline()函数的使用
    出栈序列统计
    因式分解
    质数
    多项式求和
    回文数字
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/7141884.html
Copyright © 2011-2022 走看看