#include<iostream>
#include<queue>
using namespace std;
int s,t,n,m,last[505],d[505],cnt,in[505],tp[505],ot[505];
struct edge{
int v,next;
}e[1000005];
void add(int u,int v)
{
e[++cnt].v=v;
e[cnt].next=last[u];
in[v]++;
ot[u]++;
last[u]=cnt;
}
void tpsort()
{
int k=0;
queue<int>q;
for(int i=1;i<=n;i++)
{
if(!in[i])
{
tp[++k]=i;
q.push(i);
}
}
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=last[u];i;i=e[i].next)
{
int v=e[i].v;
in[v]--;
if(!in[v])
{
q.push(v);
tp[++k]=v;
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1,u,v;i<=m;i++)
{
cin>>u>>v;
add(u,v);
}
cin>>s>>t;
d[s]=1;
tpsort();
bool ans=0;
for(int i=1;i<=n;i++)
{
int u=tp[i];
if(u==t) continue;
if(u!=t&&d[u]&&!ot[u])
ans=1;
for(int j=last[u];j;j=e[j].next)
{
int v=e[j].v;
d[v]+=d[u];
}
}
if(!d[t]||s==t) ans=1;
cout<<d[t]<<' '<<(ans?"No":"Yes");
return 0;
}
7-21 那就别担心了
最新推荐文章于 2024-10-04 18:59:43 发布