比赛 2024国庆练习1 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 袁书杰 运行时间 0.696 s
代码语言 C++ 内存使用 11.54 MiB
提交时间 2024-10-04 15:30:10
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
const int mod=1e9+7;
using namespace std;
int n,etot,head[1000005],in_degree[1000005],ans[1000005];
struct edge {
	int u,v,nxt;
} e[1000005];
void adde(int u,int v) {
	e[++etot]= {u,v,head[u]};
	head[u]=etot;
}
queue<int> q;
signed main(){
    freopen("three_squirrels.in","r",stdin);
    freopen("three_squirrels.out","w",stdout);
	ios::sync_with_stdio(false);
 	cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		int tot;
		cin>>tot;
		for(int j=1;j<=tot;j++){
			int u;
			cin>>u;
			in_degree[i]++;
			adde(u,i);
		}
	}
	ans[0]=1;
	q.push(0);
	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=head[u];i;i=e[i].nxt){
			int v=e[i].v;
			ans[v]+=ans[u];
			ans[v]%=mod;
			in_degree[v]--;
			if(!in_degree[v]){
				q.push(v);
			}
		}
	}
	cout<<ans[n]%mod;
    return 0;
}