1 条题解
-
0
深搜砸摄像头
#include <bits/stdc++.h> using namespace std; const int MAXN = 500; int n, m; vector<int> e[MAXN + 5]; // 当前位置被几个摄像头监视(实际上就是入度) int cnt[MAXN + 5]; // flag[pos] 记录 pos 位置有没有摄像头 bool flag[MAXN + 5]; void dfs(int u) { for (int i = 0; i < e[u].size(); i++) { int v = e[u][i]; if (!flag[v]) // 没摄像头的位置就不用管了 continue; cnt[v]--; if (cnt[v] == 0) dfs(v); } } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) { int u, m, v; cin >> u; flag[u] = true; // 标记这个位置有摄像头 cin >> m; for (int j = 1; j <= m; j++) { cin >> v; e[u].push_back(v); cnt[v]++; } } for (int i = 1; i <= 500; i++) if (cnt[i] == 0 && flag[i]) dfs(i); int ans = 0; for (int i = 1; i <= 500; i++) if (cnt[i] == 0 && flag[i]) ans++; if (ans == n) cout << "YES\n"; else cout << n - ans; return 0; }
信息
- ID
- 3520
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者