I am using dp with dfs to calculate the number of paths to each point. Can somebody tell me what am I missing?
include<bits/stdc++.h>
using namespace std; using ll = long long;
const int mod = 1e9 + 7;
void solve () { int C, B, S, T; cin >> C >> B >> S >> T;
vector<ll> graph[C + 1];
vector<bool> vis(C + 1);
for (int i = 0; i < B; i++) {
ll x, y;
cin >> x >> y;
graph[x].push_back(y);
}
vector<ll> dp(C + 1);
dp[S] = 1LL;
stack<ll> st;
st.push(S);
while (!st.empty()) {
ll v = st.top();
st.pop();
vis[v] = true;
for (ll u: graph[v]) {
dp[u] = (dp[u] + dp[v]) % mod;
if (!vis[u])
st.push(u);
}
}
cout << dp[T] % mod << "\n";}
int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}}



