最短路模板

来源:互联网 发布:登陆淘宝网 编辑:程序博客网 时间:2024/06/06 03:36

Floyd

/*Floydfor(int i=0; i<n; i++){    for(int j=0; j<n; j++)    {        for(int k=0; k<n; k++)        {            if(maps[j][k]>maps[j][i]+maps[i][k])                maps[j][k]=maps[j][i]+maps[i][k];        }    }}*/

Dijkstra

/*Dijkstra#include<bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn=1005;int N,M,S;int vis[maxn],cast[maxn],maps[maxn][maxn];void dijkstra(){    int i,j,minn,pos;    memset(vis,0,sizeof(vis));    vis[0]=1;    for(i=1; i<=n; i++)        cast[i] = maps[0][i];    for(i=1; i<=n; i++)    {        minn=INF;        for(j=1; j<=n; j++)        {            if(cast[j]<minn&&!vis[j])            {                pos=j;                minn=cast[j];            }        }        vis[pos]=1;        for(j=1; j<=n; j++)        {            if(cast[pos]+maps[pos][j]<cast[j]&&!vis[j])                cast[j]=cast[pos]+maps[pos][j];        }    }}*/
/*int dijkstra(){    int i,j,minn,pos;    memset(vis,0,sizeof(vis));    for(i=0; i<=N; i++)        cast[i]=(i==0?0:INF);    for(i=0; i<=N; i++)    {        minn=INF;        for(j=0; j<=N; j++)        {            if(cast[j]<minn&&!vis[j])            {                pos=j;                minn=cast[j];            }        }        vis[pos]=1;        if(pos==S)            return cast[pos];        for(j=0; j<=N; j++)        {            if(cast[pos]+maps[pos][j]<cast[j]&&!vis[j])                cast[j]=cast[pos]+maps[pos][j];        }    }    return -1;}*/

SPFA

/*void spfa(int s){    queue <int> q;    for(int i=1;i<=n;i++)    dist[i]=inf;    memset(vis,false,sizeof(vis));    q.push(s);    dist[s]=0;    while(!q.empty())    {        int u=q.front();        q.pop();        vis[u]=false;        for(int i=head[u];i!=-1;i=e[i].next)        {            int v=e[i].to;            if(dist[v]>dist[u]+e[i].w)            {                dist[v]=dist[u]+e[i].w;                if(!vis[v])                {                    vis[v]=true;                    q.push(v);                }            }        }    }}*/