# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
249461 | 2020-07-15T05:26:14 Z | dwsc | Meetings (JOI19_meetings) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include "meeting.h" using namespace std; int lca[310][310]; int depth[310]; set<int> subtree[310]; void dfs(int u){ //cout << u << "hi\n"; for (auto it = subtree[u].begin(); it != subtree[u].end(); ++it){ int v = *it; if (depth[v] == depth[u]+1){ //cout << u << " " << v << "hi\n"; Bridge(u,v); dfs(v); } } } void Solve(int N) { for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ if (i == j) lca[i][j] = i; else if (i == 0 || j == 0) lca[i][j] = 0; else lca[i][j] = Query(0,i,j); } } for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ if (i == j) continue; if (lca[i][j] == i){ depth[j]++; subtree[i].insert(j); } } } dfs(0); }