답안 #363894

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
363894 2021-02-07T12:59:15 Z ogibogi2004 Shell (info1cup18_shell) C++14
0 / 100
18 ms 23916 KB
#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;
	p+=2;
	a[1]=1;a[p]=n;
	for(int i=2;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[a[1]]=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;
}
/*
6 9 2
1 3
1 3
1 3
1 2
2 3
2 4
3 4
3 5
4 5
5 6
*/

Compilation message

shell.cpp: In function 'int main()':
shell.cpp:49:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |  for(int i=0;i<t.size();i++)where[t[i]]=i;
      |              ~^~~~~~~~~
shell.cpp:67:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |  for(int i=0;i<t.size();i++)
      |              ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Incorrect 17 ms 23916 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Incorrect 17 ms 23916 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 18 ms 23916 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Incorrect 17 ms 23916 KB Output isn't correct
3 Halted 0 ms 0 KB -