传送⻔
题意
给出点数为 n n n,边数为 m m m的有向图,问每次删去一条边时, 1 − n 1 - n 1−n的最短路,每次询问相互独立。 n < = 400 n < = 400 n<=400
分析
分情况讨论,我们先求出这个图内的最短路,并且路径还原就可以知道哪些边在最短路中,这些边在图中最多不超过 n − 1 n - 1 n−1条
如果当前枚举的边不是最短路中的边,那么直接输出答案,如果是,那么考虑把这条边删去然后跑最短路
时间复杂度为 O ( n ∗ ( n + m ) ) O(n * (n + m)) O(n∗(n+m))
代码
#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define debug(x) cout<<#x<<":"<<x<<endl;
#define dl(x) printf("%lld\n",x);
#define di(x) printf("%d\n",x);
#define _CRT_SECURE_NO_WARNINGS
#define pb push_back

这篇博客探讨了一种有向图的最短路问题,在给定的边数和点数下,每次删除一条边时如何计算从1到n的最短路径。文章通过分情况讨论和BFS算法来解决这个问题,时间复杂度为O(n*(n+m))。在删除边后,重新计算最短路径并输出结果。
最低0.47元/天 解锁文章
921

被折叠的 条评论
为什么被折叠?



