A21609.最短路计数 最好题解
2026-10-16 20:05:28
发布于:浙江
3阅读
0回复
0点赞
第一篇!!
此题简单,先建图,再bfs就行了,此题为绿题?
#include<bits/stdc++.h>
using namespace std;
const int mod=1e5+3;
const int maxn=100010;
int n, m;
int a[maxn];
vector<int> h[maxn];
int d[maxn], c[maxn];
int main(){
cin >> n >> m;
while(m--){
int u, v;
cin >> u >> v;
h[u].push_back(v);
h[v].push_back(u);
}
memset(d, 0x3f, sizeof(d));
d[1]=0;
c[1]=1;
queue<int> q;
q.push(1);
while(q.size()){
int u=q.front();
q.pop();
for(int v :h[u]){
if(d[v] < d[u]+1) continue;
if(d[v] == d[u]+1){
c[v]=(c[v]+c[u]) % mod;
continue;
}
d[v]=d[u]+1;
c[v]=c[u];
q.push(v);
}
}
for(int i=1; i<=n; i++){
cout << c[i] << endl;
}
return 0;
}
每日一片题解,身体健康康~
这里空空如也


有帮助,赞一个