100pts求调

P1137 旅行计划

```cpp #include <bits/stdc++.h> using namespace std; vector<int> v[200001]; queue<int> q; int deg[100001]; int dp[100001]; int n, m; void tp() { for (int i = 1; i <= n; i++) { if (deg[i] == 0) { q.push(i); } } memset(dp, 0, sizeof(dp)); dp[1] = 1; while (!q.empty()) { int k = q.front(); q.pop(); for (auto x: v[k]) { deg[x]--; if (deg[x] == 0) { dp[x] = max(dp[x], dp[k] + 1); q.push(x); } } } } int main() { cin >> n >> m; int x, y; for (int i = 1; i <= m; i++) { cin >> x >> y; v[x].push_back(y); deg[y]++; } tp(); for (int i = 1; i <= n; i++) { cout << dp[i] + 1 << endl; } return 0; } ```
by __Tonycyt__ @ 2024-04-06 11:10:40


|