spfa 洛谷P1608 路徑統計

2021-08-03 13:25:38 字數 758 閱讀 7427

spfa最短路計數;

我們在spfa裡面修改就好了;

我們增加乙個cnt陣列,表示到達這個點的最短路總方案;

但是這樣的話在傳遞方面有問題;

我們怎麼辦呢;

對於乙個點x;

我們列舉另乙個點k;

if(d[x]+g[x][k]==d[k])cnt[k]+=cnt[x];

if(d[x]+g[x][k]

d[k]=d[x]+g[x][k];

cnt[k]=cnt[x];

}

關鍵來了;

我們最好要把cnt[x]清空;

這樣的話,cnt陣列的值一旦把貢獻全部算好就清空,不會產生重複;

#include

#define ll long long

using

namespace

std;

const

int n=2e3+5;

int g[n][n],d[n],cnt[n];

bool in[n];

int n,m,x,y,z;

void spfa(int s,int e)cnt[x]=0;

}}int main()

spfa(1,n);

if(d[n]==g[0][0])printf("no answer");else

printf("%d %d",d[n],cnt[n]);

}

洛谷 P1608 路徑統計

rp餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓hzh,tzy去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有n個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向的,從小鎮i到j需要花費...

洛谷 P1608 路徑統計

洛谷傳送門 rp 餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓 hzh,tzy 去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有 nn 個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向...

洛谷 P1608 路徑統計

rp餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓hzh,tzy去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有n個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向的,從小鎮i到j需要花費...