7 8
7 6
7 4
6 5
4 1
5 2
5 3
2 1
3 1
7 1
7 8
7 6
7 4
6 5
4 1
5 2
5 3
6 1
3 1
7 1
#include <bits/stdc++.h>
using namespace std;
const int maxn = 510;
int n,m,s,t;
vector<int> ve[maxn];
int dp[maxn];
int dfs(int x){
if(dp[x]) return dp[x];
if(x == t) return 1;
for(auto v : ve[x]){
dp[x] += dfs(v);
}
return dp[x];
}
int vis[maxn];
queue<int> que;
int bfs(){
que.push(s);
while(!que.empty()){
int tp = que.front();
que.pop();
if(vis[tp]) continue;
vis[tp] = 1;
if(tp == t) continue;
if(!dp[tp]) return 0;
for(auto x : ve[tp]){
que.push(x);
}
}
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin >> n >> m;
for(int i = 0; i < m; i++){
int a,b;cin >> a >> b;
ve[a].push_back(b);
}
cin >> s >> t;
dfs(s);
//for(int i = 1; i <= n; i++){
// cout << " " << dp[i] << endl;
// }
cout << dp[s] << " ";
if(bfs()) cout << "Yes" << endl;
else cout << "No" << endl;
return 0;
}