1 条题解
-
0
记忆化搜索
#include <bits/stdc++.h> using namespace std; const int MAXN = 5000; const int MOD = 80112002; int n, m; int inD[MAXN + 5]; // 记录每个点的入度 vector<int> e[MAXN + 5]; // f(u) 从 u 有多少条走到底的路径 int book[MAXN + 5]; int f(int u) { if (book[u] != 0) return book[u]; int res = 0; for (int v : e[u]) res = (res + f(v)) % MOD; if (res == 0) res = 1; return book[u] = res; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 1; i <= m; i++) { int u, v; cin >> u >> v; e[u].push_back(v); inD[v]++; } for (int i = 1; i <= n; i++) if (inD[i] == 0) { e[n + 1].push_back(i); inD[i]++; } cout << f(n + 1); return 0; }
信息
- ID
- 4698
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者