求助,不理解取模的代码
查看原帖
求助,不理解取模的代码
618954
Leonardo99_楼主2023/4/23 20:36
#include <bits/stdc++.h>
using namespace std;
vector<int> e[5005];
int rud[5005],out[5005];
int n,m,u,v,ans;
int val[5005];//记忆化搜索
int dfs(int n){
	if(rud[n]==0) return 1;
	if(val[n]) return val[n];
	for(int i=0;i<e[n].size();i++){
		int now=e[n][i];
		val[n]=(val[n]+dfs(now))%80112002;
                //不太理解为什么这里也要取模
	}
	return val[n];
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		e[v].push_back(u);
		rud[v]++;
		out[u]++; 
	}
	for(int i=1;i<=n;i++){
		if(out[i]==0){
			ans=(ans+dfs(i))%80112002;
                        //知道这个公式(a+b)%n=(a%n+b%n)%n
但是不理解为什么这么写代码
                       //这不是相当于((a%n+b)%n+c)%n吗?
		}
	}
	cout<<ans;
	return 0;
}
2023/4/23 20:36
加载中...