結果
| 問題 |
No.1424 Ultrapalindrome
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-12-28 05:26:19 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,453 bytes |
| コンパイル時間 | 768 ms |
| コンパイル使用メモリ | 92,184 KB |
| 最終ジャッジ日時 | 2025-01-17 07:48:28 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 18 WA * 11 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
using ll = long long;
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<vector<int>> adj(n, vector<int>());
for (int i = 0; i < n - 1; i++)
{
int v1, v2;
cin >> v1 >> v2;
v1--;
v2--;
adj[v1].push_back(v2);
adj[v2].push_back(v1);
}
vector<int> lst;
for (int i = 0; i < n; i++)
{
if (adj[i].size() >= 3)
{
lst.push_back(i);
}
}
if (lst.size() >= 2)
{
cout << "No" << endl;
}
else if (lst.size() == 0)
{
cout << "Yes" << endl;
}
else {
set<int> lens;
queue<pair<int, pair<int, int>>> que;
while (!que.empty())
{
auto data = que.front();
que.pop();
int v = data.first;
int p = data.second.first;
int d = data.second.second;
bool isleaf = true;
for (int w : adj[v])
{
if (w != p)
{
isleaf = false;
que.push(make_pair(w, make_pair(v, d + 1)));
}
}
if (isleaf)
{
lens.insert(d);
}
}
cout << (lens.size() == 1 ? "Yes" : "No") << endl;
}
}