結果
問題 |
No.763 Noelちゃんと木遊び
|
ユーザー |
![]() |
提出日時 | 2024-12-31 01:39:02 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 107 ms / 2,000 ms |
コード長 | 1,221 bytes |
コンパイル時間 | 2,203 ms |
コンパイル使用メモリ | 208,780 KB |
実行使用メモリ | 12,032 KB |
最終ジャッジ日時 | 2025-03-22 10:44:10 |
合計ジャッジ時間 | 4,842 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll= long long; int main(){ ll n; cin >> n; vector<vector<ll>>g(n); for (ll i = 0; i < n-1; i++) { ll u,v; cin >> u >> v; u--,v--; g[u].push_back(v); g[v].push_back(u); } vector<ll>memo(n,99999999); memo[0]=0; queue<ll>que; que.push(0); while (!que.empty()) { ll v=que.front(); que.pop(); for (ll i = 0; i < g[v].size(); i++) { if (memo[g[v][i]]>memo[v]+1) { memo[g[v][i]]=memo[v]+1; que.push(g[v][i]); } } } vector<ll>st(n,0); vector<pair<ll,ll>>p(n); for (ll i = 0; i < n; i++) { p[i]={memo[i],i}; } sort(p.begin(),p.end()); reverse(p.begin(),p.end()); ll ans=0; for (ll i = 0; i < n; i++) { ll x=p[i].second; bool ok=true; for (ll j = 0; j < g[x].size(); j++) { if (st[g[x][j]]) { ok=false; break; } } if (ok) { st[x]=1; ans++; } } cout << ans << endl; }