傳送門
// 題意: 就是求1-n的最短路條數.
注意乙個點就是重邊只算一條(所以我wa了兩發), 所以我們建圖時需要去重.
然後開乙個陣列記錄下到這個點時最短路有多少條, 所以當dis[to] == dis[u.to] + e[i].w; 就要更新這個記錄陣列, ans[to] += ans[u.to];
就是在原先的dij進行一些小的改變即可.
ac code
const int maxn = 2e3+5;
int cas=1;
struct node
}e[maxn*maxn];
int cnt, head[maxn];
void add(int u, int v, int w) ;
head[u] = cnt++;
}void init()
int dis[maxn], vis[maxn];
int ans[maxn];
void dij(int st, int ed) );
fill(dis, inf); fill(vis, 0); fill(ans ,0);
dis[st] = 0; ans[st] = 1;
while(!q.empty()) );
}else
if (d == dis[to]) ans[to] += ans[u.to];
// cout << "aaa"
<< ans[u.to] << ' '
<< ans[to] << endl;}}
if (dis[ed] == inf) cout << "no answer"
<< endl;
else
printf("%d
%d\n", dis[ed], ans[ed]);
}int
s[maxn][maxn];
void solve()
dij(1, 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需要花費...