1、2、3、4WA求助
查看原帖
1、2、3、4WA求助
852112
O_v_O楼主2023/11/28 19:12

请求大佬指出问题

#include<bits/stdc++.h>
using namespace std;
const int MX=1000000000;
const int N=1e5+10;
const int mod=100003;
int n,m,s,head[N],tot,dis[N],ans[N],b[N];
struct node{
	int u,v,next;
}e[200010];
struct node1{
	int u,dis;
	friend bool operator<(node1 a,node1 b){
		return a.dis>b.dis;
	}
};
void add(int u,int v){
	e[++tot]={u,v,head[u]};
	head[u]=tot;
}
void dj(int s){
	for(int i=1;i<=n;i++){
		if(i!=s)dis[i]=MX;
	}
	dis[s]=0;
	priority_queue<node1> q;
	q.push({s,0});
	while(!q.empty()){
		node1 tmp=q.top();
		q.pop();
		int u=tmp.u;
		if(b[u]==1) continue;
		b[u]=1;
		for(int i=head[u];i;i=e[i].next){
			int v=e[i].v,w=1;
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				ans[v]=ans[u];
				q.push({v,dis[v]});
			}else if(dis[v]==dis[u]+w){
				ans[v]+=ans[u];
				ans[v]%=mod;
			}
		}
	}
}
int main(){
	ans[1]=1;
	int x,y,z;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		add(x,y);
	}
	dj(1);
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<"\n";
	}
	return 0;
}
2023/11/28 19:12
加载中...