1382:最短路(Spfa) 1382:最短路(Spfa) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5653 通过数: 1599 【题目描述】 给定MM 条边, NN 个点的带权无向图。求 11到 NN 的最短路。 【输入】 第一行:N,M(N≤100000,M≤500000)N,M(N≤100000,M≤500000); 接下来MM行33个正整数:ai,bi,ci表示...
spfa();printf("%d\n", dis[n]);return0; } 参考自https://blog.csdn.net/The_Architect/article/details/89338757。
百度百科上spfa的思路为:动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点放入队尾。这样不断从队列中取出结点来进行松弛操作,直至队列空...
void add_edge(int from, int to, int dis){ s[++cnt].last = head[from]; s[cnt].to = to; s[cnt].dis = dis; head[from] = cnt; } int dis[250000]; int exist[250000]; //是否存在于队列当中 void spfa(){ memset(dis, inf, sizeof(dis)); memset(exist, 0, sizeof(exist));...