朴素的dijkstra模板
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; } } } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步