#include using namespace std; const int N = 1005; // 根据题目点的数量范围调整 vector adj[N]; // 邻接表(有权图需要使用结构体) bool vis[N]; int step[N]; int n, m, st, ed, cnt; void dfs(int u) { if (u == ed) { cnt++; return; } // 到终点 for (int v: adj[u]) { if (vis[v]) continue; vis[v] = 1; dfs(v); vis[v] = 0; } } int main() { cin >> n >> m >> st >> ed; while (m--) { int u, v; cin >> u >> v; adj[u].push_back(v); // 无向图需要反向边 // adj[v].push_back(u); } vis[st] = 1; dfs(st); cout << cnt; return 0; }