Submission #1137844

#TimeUsernameProblemLanguageResultExecution timeMemory
1137844nikolashamiShell (info1cup18_shell)C++20
100 / 100
188 ms54688 KiB
#include<bits/stdc++.h> using namespace std; #define int int64_t #define pb push_back const int N=1e6+2,mod=1e9+7; vector<int>rg[N],cur; int memo[N],vrx[N],vis[N]; int get(int u,int v){ cur.push_back(v); if(u==v)return memo[v]=1; if(memo[v]!=-1)return memo[v]; int sm=0; for(int j:rg[v]){ if(!vis[j]||j==u) sm=(sm+get(u,j))%mod; } return memo[v]=sm; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int n,m,p; cin>>n>>m>>p; for(int i=1;i<=p;++i) cin>>vrx[i]; for(int i=0,u,v;i<m;++i){ cin>>u>>v; rg[v].pb(u); } vrx[0]=1; vrx[p+1]=n; p+=2; fill(memo,memo+N,-1); int ans=1; for(int i=1;i<p;++i){ cur.clear(); ans=(ans*get(vrx[i-1],vrx[i]))%mod; for(auto&x:cur) vis[x]=1; } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...