0分求助
查看原帖
0分求助
1040770
Demo_B11楼主2024/1/12 16:37

rt,感觉思路没什么问题,但是0pts. 评测记录 Code:

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000010
int n,m,g,u,v;
vector<int> G[MAXN],G2[MAXN];
int Max[MAXN],Ans[MAXN]; 
bool vis[MAXN],flag;
struct node{
	int D,step;
};
void Px_(){
	queue<node> q;
	q.push({1,0});
	while(!q.empty()){
		node x=q.front();
		q.pop();
		for(int i=0;i<G2[x.D].size();i++){
			g=G2[x.D][i];
			if(!vis[g]){
				Max[g]=x.step+1;
				vis[g]=true;
				q.push({g,x.step+1});
			}
		}
	}
}
void Bfs(){
	queue<node> q;
	q.push({1,0});
	while(!q.empty()){
		node m=q.front();
		q.pop();
		for(int i=0;i<G[m.D].size();++i){
			int p=G[m.D][i];
			if(Max[p]==m.step+1){
				Ans[p]++; 
				Ans[p]%=100003;
			} 
			q.push({p,m.step+1});
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		flag=true;
		for(int i=0;i<G[u].size();i++){
			if(!G[u][i]){flag=false;break;}
		}
		if(flag){G2[u].push_back(v);}
	}
	Px_();
	Bfs();
	Ans[1]=1;
	for(int i=1;i<=n;i++){
		printf("%d\n",Ans[i]);
	}
	return 0;
}
2024/1/12 16:37
加载中...