为什么答案会全部差1,疑惑++
查看原帖
为什么答案会全部差1,疑惑++
671614
raincome楼主2024/4/21 20:07

思索(该不会是若至错误吧)

#include<bits/stdc++.h>
using namespace std;
int n,m;
int ind[5008];
int out[5008];
int vis[5008];
int num[5008];
int dp[5008][5008];
int flag=0;
queue<int > q;
const int mod = 80112002;
vector<int> dot[5008];
int main () {
	int n,m,a,b,ans,sum=1;
	cin>>n>>m;
	for (int i=1; i<=m; i++) {
		cin>>a>>b;
		ind[a]++;
		out[b]++;
		dot[b].push_back(a);
	}
//	for(int i=1;i<=n;i++){
//		for(int j=0;j<dot[i].size();j++){
//			cout<<dot[i][j]<<" ";
//		}
//		cout<<endl;
//	} 
	for(int i=1; i<=n; i++) {
		if(ind[i]==0) {
			q.push(i);
			num[i]=1;
		}
	}
	int now;
	while(!q.empty()) {
		
		now=q.front();

		q.pop();
		for(int j=0; j<dot[now].size(); j++) {
	
			ind[dot[now][j]]--;
			num[dot[now][j]]=(num[now]+num[dot[now][j]])%mod;
			if(ind[dot[now][j]]==0)q.push(dot[now][j]);
		}
	}
	for(int i=1; i<=n; i++) {
		if(out[i]==0) ans = (ans + num[i]) % mod;;
	}
	cout<<ans;
}
2024/4/21 20:07
加载中...