結果
問題 |
No.3217 Shiki no Shiki
|
ユーザー |
![]() |
提出日時 | 2025-09-30 17:15:32 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 48 ms / 2,000 ms |
コード長 | 663 bytes |
コンパイル時間 | 5,775 ms |
コンパイル使用メモリ | 172,748 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2025-09-30 17:15:45 |
合計ジャッジ時間 | 5,445 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i < b; i++) using ll = long long; int main(){ int n; cin >> n; vector<int> p(n), in(n), v(n); rep(i, 0, n) { cin >> p[i]; p[i]--; } vector<vector<int>> g(n); rep(i, 0, n) { if(p[i] < 0) continue; g[i].push_back(p[i]); in[p[i]]++; } using P = pair<int, int>; queue<P> q; rep(i, 0, n) { if(in[i]) continue; q.push({i, 0}); } while(q.size()) { int u, d; tie(u, d) = q.front(); q.pop(); if(d == 2) { v[u]++; continue; } for(int e : g[u]) { q.push({e, d + 1}); } } int ans = 0; rep(i, 0, n) if(v[i]) ans++; cout << ans << endl; }