void dijkstra(int n,int dist[],EDGE edges[],int pre[],int src,int dest)
{
int _min,u,v,w;
bool visit[maxn]={0};
for (int i=1;i<=n;i++)
{
dist[i]=OO;
}
dist[src]=0;
for (int loop=1; loop<=n; loop++)
{
u=0;
_min=OO;
for (int i=1; i<=n; i++)
{
if (!visit[i]&&dist[i]<_min)
{
_min=dist[i];
u=i;
}
}
if (u==0) return;
visit[u]=true;
if (u==dest) return;
for (int i=head[u];i!=-1;i=edges[i].next)
{
v=edges[i].to;
w=edges[i].w;
if (!visit[v]&&dist[u]+w<dist[v])
{
dist[v]=dist[u]+w;
pre[v]=u;
}
}
}
}
朴素的dijkstra模板
最新推荐文章于 2022-11-14 11:22:46 发布