dijkstra基础

void dijkstra(int v0)
{
    for(int i=0;i<n;i++)
    {
        dis[i]=mp[v0][i];
    }
    book[v0]=1;
    for(int i=0;i<n-1;i++)
    {
        int minn=INF,u;
        for(int j=0;j<n;j++)
        {
            if(book[j]==0&&dis[j]<minn)
            {
                minn=dis[j];
                u=j;
            }
        }
        book[u]=1;
        for(int j=0;j<n;j++)
        {
            if(book[j]==0&&dis[u]+mp[u][j]<dis[j])
            {
                dis[j]=dis[u]+mp[u][j];
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/bxd123/p/10327538.html