Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N=1e5+10;
- vector<int> g[N];
- int n, m;
- int low[N], in[N];
- int t;
- void Tarjan (int v, int prev)
- {
- in[v]=low[v]=++t;
- for (auto xt: g[v])
- {
- if (xt==prev) continue;
- if (!in[xt])
- {
- Tarjan (xt, v);
- if (low[xt]>in[v]) cout << v << " " << xt << endl;
- low[v]=min(low[v], low[xt]);
- }
- else low[v]=min(low[v], in[xt]);
- }
- }
- int main()
- {
- scanf ("%d%d", &n, &m);
- for (int i=0;i<m;i++)
- {
- int a, b;
- scanf ("%d%d", &a, &b);
- g[a].push_back(b);
- g[b].push_back(a);
- }
- Tarjan(1, 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment