結果
| 問題 |
No.977 アリス仕掛けの摩天楼
|
| ユーザー |
RyumaRyama
|
| 提出日時 | 2020-01-31 22:24:10 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 934 bytes |
| コンパイル時間 | 782 ms |
| コンパイル使用メモリ | 76,664 KB |
| 実行使用メモリ | 9,304 KB |
| 最終ジャッジ日時 | 2024-09-17 08:50:25 |
| 合計ジャッジ時間 | 2,301 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 26 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<bool>& checked, vector<vector<int>>& path, int island) {
checked[island] = true;
for (auto i : path[island]) {
if (!checked[i]) dfs(checked, path, i);
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> path(n, vector<int>());
vector<bool> checked(n, false);
vector<int> path_cnt(n, 0);
for (int i=0; i<n-1; i++) {
int u, v;
cin >> u >> v;
path[u].push_back(v);
path_cnt[u]++;
path[v].push_back(u);
path_cnt[v]++;
}
int cnt = 0;
bool f = false;
for (int i=0; i<n; i++) {
if (!checked[i]) {
cnt++;
dfs(checked, path, i);
}
if (path_cnt[i] == 1) f = true;
}
cout << cnt << endl;
if (cnt > 2 || (cnt == 2 && f))
cout << "Alice" << endl;
else
cout << "Bob" << endl;
}
RyumaRyama