Dijkstra模板

 


#define N 1002

#define MAX 99999

int edges[N][N],d[N],n;

 

void dijkstra(int v)

{

        int i,j;

        bool s[N]={false};

        for(i=1;i<=n;i++)

                d[i]=edges[v][i];

        d[v]=0;s[v]=true;

        for(i=1;i<n;i++)

        {

                int temp=MAX;

                int u=v;

                for(j=1;j<=n;j++)

                        if((!s[j])&&(d[j]<temp))

                        {

                                u=j;

                                temp=d[j];

                        }

                        s[u]=true;

                        for(j=1;j<=n;j++)

                                if((!s[j])&&(edges[u][j]<MAX)&&(d[u]+edges[u][j])<d[j])

                                        d[j]=d[u]+edges[u][j];

        }

 

}

你可能感兴趣的:(dijkstra)