0分求调
查看原帖
0分求调
255162
封禁用户楼主2024/7/13 10:09
#include <bits/stdc++.h>
#include <iomanip>
#include <iostream>
#include <cstring>
using namespace std;
struct edge {
	int next;
	int to;
	int w;
} edge[1000005];
int head[1000000], cnt;
long long ans[1000005],dis[100000];

void add(int u, int v) {
	edge[++cnt].to = v;
	edge[cnt].next = head[u];
	head[u] = cnt;
}
int n, m, s, u, v, w;
bool check[10000000];
queue<int> q;
int main() {
	cin  >> n >> m ;
	for (int i = 1; i <= m; i++) {
		scanf("%d%d", &u, &v);
		add(u, v);
		add(v, u);
	}
	memset(dis,1e9,n);
	dis[1]=0;
	ans[1] = 1;
	check[1] = 1;
	q.push(1);
	while (!q.empty()) {
		int u = q.front();
		q.pop();
		check[u]=0;
		for (int i = head[u]; i ; i = edge[i].next) {
			int v = edge[i].to;
			if (dis[v] > dis[u]+1) {
				dis[v] = dis[u]+1 ;
				ans[v] = ans[u] ;
				if (!check[v]) {
					q.push(v);
					check[v]=1;
				}
			} else if(dis[v]==dis[u]+1) {
				ans[v]+=ans[u];
				ans[v]%=100003;
			}

		}
	}
	for (int i = 1; i <= n; i++) {
		cout << ans[i] << endl;
	}
	return 0;
}

各位大佬,为什么我的输出全是0?

2024/7/13 10:09
加载中...