注意最佳消费者和最佳生产者可能会有多个,在写代码的时候要注意。
需要这样写:
queue<int> q;
vector<int> dp(n + 1, 0);
for(int i = 1; i <= n; ++ i)
if(!in[i]){
dp[i] = 1;
q.push(i);
}
而不是:
queue<int> q;
vector<int> dp(n + 1, 0);
int dest = 0;
for(int i = 1; i <= n; ++ i)
if(!in[i]){
dest = i;
}
q.push(dest);
dp[dest] = 1;
输出同理:
int ans = 0;
for(int i = 1; i <= n; ++ i)
if(! out[i])
ans = (ans + dp[i]) % MOD;
cout << ans % MOD;