Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- const int MAXN = 10;
- std::vector<int> g[MAXN];
- bool used[MAXN];
- int timer, tin[MAXN], fup[MAXN];
- int min(int a, int b)
- {
- return a < b ? a : b;
- }
- void dfs(int v, int p = -1) {
- used[v] = true;
- tin[v] = fup[v] = timer++;
- int children = 0;
- for (size_t i = 0; i < g[v].size(); ++i) {
- int to = g[v][i];
- if (to == p) continue;
- if (used[to])
- fup[v] = min(fup[v], tin[to]);
- else {
- dfs(to, v);
- fup[v] = min(fup[v], fup[to]);
- if (fup[to] >= tin[v] && p != -1)
- std::cout << v;
- ++children;
- }
- }
- if (p == -1 && children > 1)
- std::cout << v;
- }
- int main4() {
- const int n = 7;
- g[0] = {1, 2, 5};
- g[1] = {0, 2, 3};
- g[2] = {0, 1, 3, 5};
- g[3] = {1, 2};
- g[4] = {5};
- g[5] = {0, 2, 4};
- /*
- g[0] = { 1, 3 };
- g[1] = { 0, 2, 3 };
- g[2] = { 1, 3 };
- g[3] = { 0, 1, 2, 4, 5 };
- g[4] = { 3, 5, 6 };
- g[5] = { 3, 4, 6 };
- g[6] = { 4, 5};
- */
- for (int i = 0; i < n; ++i)
- used[i] = false;
- dfs(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement