求最短路径的条数
只局限于边的长度为1这种情况
P1144 最短路计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
初始化ans[s]=1;
求最短路时,更新ans数组
void dij()
{
for (int i = 1; i <= n; i++)
dis[i] = M;
dis[1] = 0;
priority_queue<node> q;
q.push({ 1,0 });
while (!q.empty())
{
node now = q.top(); q.pop();
if (book[now.v] == 1)
continue;
book[now.v] = 1;
for (int i = 0; i < a[now.v].size(); i++)
{
if (dis[a[now.v][i]] > dis[now.v] + 1)
{
dis[a[now.v][i]] = dis[now.v] + 1;
ans[a[now.v][i]] = ans[now.v];
q.push({ a[now.v][i], dis[a[now.v][i]] });
}
else if (dis[a[now.v][i]] == dis[now.v] + 1)
{
ans[a[now.v][i]] = (ans[a[now.v][i]] + ans[now.v]) % mod;
}
}
}
}