Submission #764987

#TimeUsernameProblemLanguageResultExecution timeMemory
764987drdilyorŠarenlist (COCI22_sarenlist)C++17
10 / 110
11 ms468 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; constexpr int inf = 1e9; constexpr ll infl = 1e18; int main() { cin.tie(0)->sync_with_stdio(0); int n, m, k; cin >> n >> m >> k; vector<vector<pair<int,int>>> adj(n); for( int i = 0; i < n-1; i++) { int a, b; cin >> a >> b; a--;b--; adj[a].emplace_back(b, i); adj[b].emplace_back(a, i); } vector<pair<int,int>> p(m); for (auto& [i, j] : p) cin >> i >> j, i--,j--; auto path = [&](auto& path, int i, int j, int p=-1)->optional<vector<int>>{ if (i == j) return vector<int>{}; for (auto [e, ei] : adj[i]) { if (e == p) continue; optional<vector<int>> res = path(path, e, j, i); if (res.has_value()) { res.value().push_back(ei); return res; } } return nullopt; }; assert(n <= 15 && k == 2); int res = 0; for (int mask = 0; mask < (1<<(n-1)); mask++) { bool ok = 1; for (auto[i, j] : p) { vector edges = path(path, i, j).value(); int black = 0, white = 0; for (int e : edges) { if (mask & (1<<e)) black++; else white++; } if (!black || !white) ok = 0; if (!ok) break; } res += ok; } cout << res << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...