输出0求助(玄关)
查看原帖
输出0求助(玄关)
1199534
ycy1124楼主2024/5/25 16:24
#include<bits/stdc++.h>
using namespace std;
const int md=80112002;
vector<int>a[5001];
queue<int>q;
int rd[5001],cd[5001],ans[5001];
int main(){
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		int now,to;
		scanf("%d%d",&now,&to);
		a[now].push_back(to);
		rd[to]++;
		cd[now]++;
	}
	for(int i=1;i<=n;i++){
		if(rd[i]==0){
			q.push(i);
		}
	}
	while(!q.empty()){
		int x=q.front();
		q.pop(); 
		for(auto t:a[x]){
			ans[t]+=ans[x];
			ans[t]%=md;
			rd[t]--;
			if(rd[t]==0){
				q.push(t);
			}
		}
	}
	int js=0;
	for(int i=1;i<=n;++i){
		if(cd[i]==0){
			js+=ans[i];
			js%=md;
		}
	}
	printf("%d",js);
	return 0;
}
2024/5/25 16:24
加载中...