社区讨论
bfs 0WA
P1144最短路计数参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m2db345r
- 此快照首次捕获于
- 2024/10/17 20:57 去年
- 此快照最后确认于
- 2025/11/04 16:58 4 个月前
rt.
CPP#include <iostream>
#include <cstring>
#include <queue>
#include <map>
#define int long long
using namespace std;
const int N = 4e6 + 5, mod = 100003;
int n, m;
int cnt[N];
int d[N], vis[N], minn[N];
struct poi{
int v, w, cnt;
};
map<pair<int, int>, int> mp;
queue<poi> q;
vector<poi> g[N];
inline void bfs()
{
memset(minn, 0x3f, sizeof(minn));
vis[1] = 1;
q.push({1, 1, 1});
while(!q.empty()){
poi p = q.front();
q.pop();
for(int i = 0; i < g[p.v].size(); i++){
int v = g[p.v][i].v, w = g[p.v][i].w;
if((vis[v] < cnt[v] && p.cnt + 1 == minn[v]) || minn[v] == 4557430888798830399){
q.push({v, p.w * mp[make_pair(p.v, v)], p.cnt + 1});
vis[v]++;
d[v] += p.w * mp[make_pair(p.v, v)] % mod;
minn[v] = p.cnt + 1;
}
}
}
}
signed main()
{
// freopen("T2.in", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= m; i++){
int u, v;
cin >> u >> v;
if(u == v) continue;
if(!mp[make_pair(u, v)]) g[u].push_back({v, 1, 0}), g[v].push_back({u, 1, 0});
mp[make_pair(u, v)]++;
cnt[v]++;
}
d[1] = 1;
bfs();
for(int i = 1; i <= n; i++) cout << d[i] << "\n";
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...