Submission #9614620
Source Code Expand
#include <iostream>
#include <vector>
#define rep(i, n) for(i = 0; i < n; i++)
#define int long long
using namespace std;
int n;
vector<int> et[50];
int m;
int u[20], v[20];
int p2[51];
vector<bool> isFill[50];
int depth[50];
int parent[50];
int parentId[50];
void dfs(int p, int v, int dep) {
depth[v] = dep;
parent[v] = p;
for (int i = 0; i < et[v].size(); i++) {
int nv = et[v][i];
if (nv == p) continue;
parentId[nv] = i;
dfs(v, nv, dep + 1);
}
}
void Reset() {
int i, j;
rep(i, n) { rep(j, isFill[i].size()) isFill[i][j] = false; }
}
void Fill(int u, int v) {
if (depth[u] < depth[v]) swap(u, v);
int du = depth[u];
int dv = depth[v];
//cout << "Fill(" << u << ", " << v << ")" << endl;
//cout << "du = " << du << ", dv = " << dv << endl;
while (du > dv) {
isFill[parent[u]][parentId[u]] = true;
//cout << "u, parent[u], parentId[u] = " << u << ", " << parent[u] << ", " << parentId[u] << endl;
u = parent[u];
du--;
}
while (u != v) {
isFill[parent[u]][parentId[u]] = true;
isFill[parent[v]][parentId[v]] = true;
u = parent[u];
v = parent[v];
}
}
signed main() {
int i, j, k;
cin >> n;
rep(i, n - 1) {
int a, b;
cin >> a >> b;
a--; b--;
et[a].push_back(b);
et[b].push_back(a);
}
cin >> m;
rep(i, m) {
cin >> u[i] >> v[i];
u[i]--;
v[i]--;
}
dfs(-1, 0, 0);
p2[0] = 1;
rep(i, n) p2[i + 1] = p2[i] * 2;
rep(i, n) isFill[i].resize(et[i].size());
int ans = 0;
rep(i, (1 << m)) {
Reset();
int bcnt = 0;
rep(j, m) {
if ((i >> j) & 1) {
Fill(u[j], v[j]);
bcnt++;
}
}
int fillCnt = 0;
rep(j, n) {
rep(k, isFill[j].size()) {
if (isFill[j][k]) fillCnt++;
}
}
//cout << "i = " << i << ", fillCnt = " << fillCnt << endl;
if (bcnt % 2 == 0) ans += p2[n - 1 - fillCnt];
else ans -= p2[n - 1 - fillCnt];
}
cout << ans << endl;
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Tree and Constraints |
| User |
startcpp |
| Language |
C++14 (GCC 5.4.1) |
| Score |
600 |
| Code Size |
1987 Byte |
| Status |
AC |
| Exec Time |
743 ms |
| Memory |
256 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
| All |
dense_01.txt, dense_02.txt, dense_03.txt, dense_04.txt, dense_05.txt, large_ans.txt, line_01.txt, line_02.txt, line_03.txt, no_overlap.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, star_01.txt, star_02.txt, star_03.txt |
| Case Name |
Status |
Exec Time |
Memory |
| dense_01.txt |
AC |
162 ms |
256 KiB |
| dense_02.txt |
AC |
5 ms |
256 KiB |
| dense_03.txt |
AC |
5 ms |
256 KiB |
| dense_04.txt |
AC |
159 ms |
256 KiB |
| dense_05.txt |
AC |
5 ms |
256 KiB |
| large_ans.txt |
AC |
1 ms |
256 KiB |
| line_01.txt |
AC |
633 ms |
256 KiB |
| line_02.txt |
AC |
743 ms |
256 KiB |
| line_03.txt |
AC |
699 ms |
256 KiB |
| no_overlap.txt |
AC |
453 ms |
256 KiB |
| random_01.txt |
AC |
246 ms |
256 KiB |
| random_02.txt |
AC |
483 ms |
256 KiB |
| random_03.txt |
AC |
216 ms |
256 KiB |
| random_04.txt |
AC |
495 ms |
256 KiB |
| random_05.txt |
AC |
235 ms |
256 KiB |
| random_06.txt |
AC |
490 ms |
256 KiB |
| random_07.txt |
AC |
219 ms |
256 KiB |
| random_08.txt |
AC |
222 ms |
256 KiB |
| random_09.txt |
AC |
476 ms |
256 KiB |
| random_10.txt |
AC |
446 ms |
256 KiB |
| sample_01.txt |
AC |
1 ms |
256 KiB |
| sample_02.txt |
AC |
1 ms |
256 KiB |
| sample_03.txt |
AC |
1 ms |
256 KiB |
| sample_04.txt |
AC |
1 ms |
256 KiB |
| star_01.txt |
AC |
454 ms |
256 KiB |
| star_02.txt |
AC |
453 ms |
256 KiB |
| star_03.txt |
AC |
460 ms |
256 KiB |