POJ 1511 最短路徑

2021-05-22 19:05:43 字數 654 閱讀 4568

#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  spfa(int n, int s, node *mat)

min[s] = 0;

v[s] = true;

q.push(s);

while (!q.empty())

}p = p->next;}}

sum = 0;

for (i = 0; i < n; i++)

sum += min[i];

return sum;

}int main()

counts = 0;

for (i = 0; i < q; i++)

sum = spfa(p, 0, mat1) + spfa(p, 0, mat2);

printf("%lld/n", sum);

}return 0;

}

貼個模板,POJ 1511

n個點m條邊,有向圖,求1到其餘各點的最短距離與各點到1的距離最短的路徑總和。n m 1e6 樸素必跪。dijkstra堆優化和spfa應該都能過。因為是有向圖,求1到各點的距離,直接原圖上跑spfa。求各點回到1的距離,將邊反轉 from變to to 變from 在新圖上再跑一遍spfa。8s的題...

POJ 1511 雙向單源最短路 SPFA 鄰接表

最近在複習最短路演算法 然後今天在看差分約束系統的時候看到了這一題poj 1511 題目的大意 給出n個點和n條有向邊,求所有點到源點1的來回最短路之和 保證每個點都可以往返源點1 題目意思很簡單,但是資料規模很大,當時知道資料規模很大,用一般的方法肯定會超時或者其他錯誤,但是還是用基礎的方法寫了一...

poj1511解題報告(SPFA演算法)

題目大意 給出n個點和n條有向邊,求所有點到源點1的來回最短路之和 保證每個點都可以往返源點1 解題思路 使用spfa 鄰接鍊錶來做,因為要求來回的最短距離之和,所以先用spfa求一遍最短路,再把每條邊反過來 a到b的邊變成b到a的邊 再用spfa求一遍最短路。注意 結果要用long long 來儲...