n個點m條邊,有向圖,求1到其餘各點的最短距離與各點到1的距離最短的路徑總和。
n m 1e6
樸素必跪。。。
dijkstra堆優化和spfa應該都能過。
因為是有向圖,求1到各點的距離,直接原圖上跑spfa。。
求各點回到1的距離,將邊反轉(from變to ,to 變from),在新圖上再跑一遍spfa。
8s的題,7s卡過,真尼瑪2333333。。單純的貼個spfa的模板,以後說不定有用-- 。。
#include#include#include#include#include#include#includeusing namespace std;
const int maxn=1000055;
const long long inf=1000000005;
bool inq[maxn];
long long dis[maxn];
int a[maxn],b[maxn],c[maxn];
int n,m;
struct edge;
vectorg[maxn];
void spfa(int src)}}
}}int main()
for(int i=0;i
POJ 1511 最短路徑
include include include using namespace std const int maxn 1000005 struct node node mat1 maxn mat2 maxn queueq node pool maxn 2 2 int counts long long...
poj1511解題報告(SPFA演算法)
題目大意 給出n個點和n條有向邊,求所有點到源點1的來回最短路之和 保證每個點都可以往返源點1 解題思路 使用spfa 鄰接鍊錶來做,因為要求來回的最短距離之和,所以先用spfa求一遍最短路,再把每條邊反過來 a到b的邊變成b到a的邊 再用spfa求一遍最短路。注意 結果要用long long 來儲...
poj1511 鏈式前向星 dijkstra堆優化
如果看題解往下划拉 這題網上說卡資料,只能鏈式前向星才能過?正好學一下鏈式前向星的處理 其實 這個和vector做的鄰接表差不多。可能用起來會快一點?不然這題鄰接表為啥過不了 我覺得dijkstra的堆優化和spfa算有非常強的關聯性 這裡提幾句 分析一下異同 spfa是一種基於bfs的單源最短路演...