Submission #363889

#TimeUsernameProblemLanguageResultExecution timeMemory
363889ogibogi2004Shell (info1cup18_shell)C++14
0 / 100
273 ms30828 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=1e6+6; const ll mod=1e9+7; int n,m,p; vector<int>g[MAXN]; vector<int>t; bool vis[MAXN]; void dfs(int u) { vis[u]=1; for(auto v:g[u]) { if(vis[v]==0) { dfs(v); } } t.push_back(u); } int a[MAXN]; int where[MAXN]; int w1[MAXN]; ll dp[MAXN]; int main() { cin>>n>>m>>p; for(int i=1;i<=p;i++) { cin>>a[i]; } for(int i=0;i<m;i++) { int x,y; cin>>x>>y; g[x].push_back(y); } for(int i=1;i<=n;i++) { if(vis[i]==0) { dfs(i); } } reverse(t.begin(),t.end()); for(int i=0;i<t.size();i++)where[t[i]]=i; for(int i=2;i<=p;i++) { if(where[i-1]>where[i]) { cout<<"0\n"; return 0; } } for(int j=where[a[1]]-1;j>=0;j--)w1[j]=where[a[1]]; for(int i=2;i<=p;i++) { for(int j=where[a[i]]-1;j>=where[a[i-1]];j--) { w1[j]=where[a[i]]; } } dp[t[0]]=1; for(int i=0;i<t.size();i++) { for(auto v:g[t[i]]) { if(where[v]>w1[i])continue; dp[v]+=dp[t[i]]; dp[v]%=mod; } } cout<<dp[a[p]]<<endl; return 0; }

Compilation message (stderr)

shell.cpp: In function 'int main()':
shell.cpp:47:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |  for(int i=0;i<t.size();i++)where[t[i]]=i;
      |              ~^~~~~~~~~
shell.cpp:65:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |  for(int i=0;i<t.size();i++)
      |              ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...