帶權最短路計數,洛谷1608

2022-05-07 21:24:07 字數 949 閱讀 2435

考慮dijstra的過程,最短路計數我們只需要加上乙個ans,如果當前能鬆弛,即dis[v]>dis[u]+e[i].w,我們就講當前v的ans更新為ans[u],但還有一種特殊情況即dis[v]=dis[u]+e[i].w,我們此時需要將方案數累加,即ans[v]+=ans[u]

然後此題需要判斷重邊,就做完了

#include#include

#include

#include

#include

#define re register int

#define ll long long

#define inf 0x3f3f3f3f

#define maxn 2000050

using

namespace

std;

struct

tue[maxn

<<1

];int

head[maxn],cnt;

void add(int u,int v,int

w)int chong[2005][2005

];int

dis[maxn];

bool

vis[maxn];

intn,m;

ll ans[maxn];

priority_queue

int,int> >q;

void

dijstra()

else

if(dis[v]==dis[u]+e[i].w)}}}

signed main()

}dijstra();

if(dis[n]==inf)printf("

no answer\n");

else printf("

%d %lld\n

",dis[n],ans[n]);

return0;

}

洛谷最短路計數SPFA

給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...

洛谷1144 最短路計數

題目描述 給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入輸出格式 輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每...

洛谷1144 最短路計數

給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。大水題 為了備忘 還是記下來吧 不推方程了,in code 1 2 dijkstra 4 include5 include6 include7 include8 using namespace std ...