Untitled
unknown
plain_text
2 years ago
997 B
8
Indexable
#include <iostream> #include <vector> #define vi vector<int> #define pb push_back using namespace std; int n, m; vector <vi> g; vector <bool> used; vector <int> fup; vi tin; int tcur; void dfs(int v, int p) { used[v] = true; tcur++; fup[v] = tcur; tin[v] = tcur; for (int u : g[v]) { if (!used[u]) { dfs(u, v); fup[v] = min(fup[v], fup[u]); if (fup[u] > tin[v]) { cout << u + 1 << " " << v + 1 << endl; } } else if (u != p) { fup[v] = min(fup[v], tin[u]); } } } int main() { cin >> n >> m; g.resize(n); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; a--; b--; g[a].pb(b); g[b].pb(a); } used.resize(n, false); fup.resize(n, 1e9); tin.resize(n, 0); tcur = 0; for (int i = 0; i < n; i++) { if (!used[i]) { dfs(i, -1); } } return 0; }
Editor is loading...
Leave a Comment