結果
問題 |
No.1424 Ultrapalindrome
|
ユーザー |
|
提出日時 | 2021-03-13 12:22:35 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 1,190 bytes |
コンパイル時間 | 2,037 ms |
コンパイル使用メモリ | 199,624 KB |
最終ジャッジ日時 | 2025-01-19 16:06:31 |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
/** * author: shu8Cream * created: 13.03.2021 11:04:54 **/ #include <bits/stdc++.h> using namespace std; #define rep(i,n) for (int i=0; i<(n); i++) #define all(x) (x).begin(), (x).end() using ll = long long; using P = pair<int,int>; using vi = vector<int>; using vvi = vector<vi>; int n; vi to[200005]; vi dist; void dfs(int v, int p=-1){ for(auto nv : to[v]){ //if(dist[nv]!=-1) continue; if(nv == p) continue; dist[nv]=dist[v]+1; dfs(nv,v); } } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cin >> n; rep(i,n-1){ int a,b; cin >> a >> b; a--; b--; to[a].push_back(b); to[b].push_back(a); } int cnt = 0, v = 0; rep(i,n){ if(to[i].size()>=3){ cnt++; v=i; } } if(cnt<1){ cout << "Yes" << endl; return 0; } if(cnt>1){ cout << "No" << endl; return 0; } dist.resize(n); dist[v]=0; dfs(v); set<int> s; rep(i,n){ if(dist[i] && to[i].size()==1) s.insert(dist[i]); } if(s.size()==1) cout << "Yes" << endl; else cout << "No" << endl; }