帶費用的Dijkstra

2021-08-15 19:02:58 字數 1300 閱讀 8600

朱民欽的回家之旅

description

我們的寒假集訓就快要結束了,而優秀的朱民欽學長也要踏上回家之旅了,給你乙個圖有n個地點,分別是1-n,我們學校是在1這個點,而朱民欽學長的家在n這個點,n個點之間存在m條道路,每一條道路有距離和花費金額,而朱民欽學長想想找一條距離最短的路,如果存在多條距離相等的路,那麼輸出花費最小的道路。現在請你告訴朱民欽學長,他回家的最短距離是多少,花費又是多少。

input

第一行兩個正整數 n,m。(1<=n<=1000,1<=m<=500000)接下來m行有四個整數u,v,w,x.分別表示u和v之間有一條道路,w代表距離,x代表花費金額。(1<=w,x <= 1000);

output

如果不存在回家的路輸出:"this is a sad story"如果存在輸出一行,距離,花費金額。(中間以空格隔開)

sample input 1 

3 3

1 2 2 3

2 3 2 3

1 3 4 5

sample output 1

4 5
sample input 2 

3 1

1 2 3 6

sample output 2

this is a sad story
hint

道路均為無向邊。兩個點之間可能存在多條道路。

#include#include#include#include#include#include"vector"

#include#include "queue"

#define n 0x3f3f3f3f

using namespace std;

int p[1005][1005];

int pp[1005][1055];

int s[1005],vis[1005],d[1005];

int a,b;

void prime()

vis[1]=1;

s[1]=0;

for (int i=1; i<=a; i++) }}

}if (s[a]==n)

else

printf("%d %d\n",s[a],d[a]);

}int main()

p[i][i]=0;

}int w,e,r,t;

for (int i=1; i<=b; i++)

else if(p[w][e]==r&&pp[w][e]>t)

}prime();

}

網路流 費用流(dijkstra寫法)

p3381 模板 最小費用最大流 首先呢,dijkstra演算法求費用流是不如spfa求費用流的,因為這個題目不開o2優化,就過不去.那麼我們為什麼要用這個演算法呢?個人認為確實沒什麼用.還是用spfa或者zkw求費用流吧 總所周知,dijkstra是不能跑有負環的圖的,而我們在求最小費用流的過程中...

dijkstra 最小費用最大流

滑稽 dijkstra同樣為最短路演算法,為什麼不能跑費用流qwq 好像是因為有負權邊的緣故 但是如果我們如果使用某種玄學的將邊權都拉回到正數的話 就可以跑了dijkstra,開心qwq 如果我們每條邊暴力加上乙個很大的值的話,我們還需要記錄所經過的邊數,還要保證不溢位,十分的毒瘤 尻考慮給每個節點...

使用dijkstra求解最小費用最大流網路

在介紹如何使用dijkstra演算法求解最小費用最大流問題的時候,假設看這篇博文的讀者已經知道什麼是最小費用最大流問題及熟悉dijkstra單源最短路徑演算法。在這篇博文裡面,我並不會過多強調網路拓撲是有向圖和無向圖,因為對於無向圖來說,你可以簡單將其看成兩個點之間有一對有向邊的有向圖。求解最大最小...