RE求diao
查看原帖
RE求diao
1043209
Ice_Fist楼主2024/9/10 19:04
#include<bits/stdc++.h>
using namespace std;
const int mod=80112002;
int n,m,b[5001]={0},z[5001]={0},ans=0;
struct link{
	int x,y,nx;
};
link mp[500001];
int next[5001]={0},next0[5001]={0};
int dfs(int t){
	int num=0;
	if(!z[t]){
		return 1;
	}
	if(next0[t]){
		return next0[t];
	}
	for(int i=next[t];i;i=mp[i].nx){
		(num+=dfs(mp[i].x))%=mod;
	}
	return next0[t]=num;
}
int main(){
	cin>>n>>m;
	int i=1;
	while(m--){
		int x,y;
		b[x]=1;
		z[y]=1;
		cin>>x>>y;
		mp[i].x=x;
		mp[i].y=y;
		mp[i].nx=next[y];
		next[y]=i;
		i++;
	}
	for(int i=1;i<=n;++i){
		if(!b[i]){
			(ans+=dfs(i))%=mod;
		}
	}
	cout<<ans;
	return 0;
}
2024/9/10 19:04
加载中...