# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
585587 | 2022-06-29T05:50:23 Z | 박상훈(#8384) | Star Trek (CEOI20_startrek) | C++17 | 2 ms | 2644 KB |
#include <bits/stdc++.h> typedef long long ll; using namespace std; vector<int> adj[100100]; bool _win[100100], _win_pa[100100], _win_root[100100], ok[100100]; void dfs1(int s, int pa = -1){ int wcnt = 0, lcnt = 0; for (auto &v:adj[s]) if (v!=pa){ dfs1(v, s); if (_win[v]) wcnt++; else lcnt++; } if (!lcnt) _win[s] = 0; else _win[s] = 1; if (lcnt<=1) ok[s] = 1; } void dfs2(int s, int pa = -1){ int wcnt = 0, lcnt = 0; for (auto &v:adj[s]) if (v!=pa){ if (_win[v]) wcnt++; else lcnt++; } if (pa!=-1){ if (_win_pa[s]) wcnt++; else lcnt++; } for (auto &v:adj[s]) if (v!=pa){ if (_win[v]) wcnt--; else lcnt--; if (!lcnt) _win_pa[v] = 0; else _win_pa[v] = 1; if (_win[v]) wcnt++; else lcnt++; } if (!lcnt) _win_root[s] = 0; else _win_root[s] = 1; for (auto &v:adj[s]) if (v!=pa) dfs2(v, s); } int lscnt = 0; void dfs3(int s, int pa = -1){ if (!ok[s]) return; if (!_win[s]) lscnt++; for (auto &v:adj[s]) if (v!=pa) dfs3(v, s); } int main(){ int n; ll d; scanf("%d %lld", &n, &d); for (int i=1;i<=n-1;i++){ int x, y; scanf("%d %d", &x, &y); adj[x].push_back(y); adj[y].push_back(x); } dfs1(1); dfs2(1); dfs3(1); int lcnt = 0; for (int i=1;i<=n;i++) if (!_win_root[i]) lcnt++; ll ans = 0; if (_win[1]) ans = (ll)n*n - (ll)lscnt * lcnt; else ans = (ll)lscnt * lcnt; printf("%lld\n", ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2644 KB | Output is correct |
2 | Incorrect | 2 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2644 KB | Output is correct |
2 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2644 KB | Output is correct |
2 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2644 KB | Output is correct |
2 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2644 KB | Output is correct |
2 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2644 KB | Output is correct |
2 | Incorrect | 1 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2644 KB | Output is correct |
2 | Incorrect | 2 ms | 2644 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |