Submission #894606

#TimeUsernameProblemLanguageResultExecution timeMemory
894606IWKRPipes (CEOI15_pipes)C++17
40 / 100
889 ms65536 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector<int> adjlist[100001]; // adjacency list of graph vector<bool> visited; vector<int> tin, low; vector<pair<int, int>> bridges; int p[100001]; int p2[100001]; int timer; void dfs(int v, int p = -1) { visited[v] = true; tin[v] = low[v] = timer++; bool yes = false; for (int to : adjlist[v]) { if (to == p && !yes) yes = 1; else if (visited[to]) { low[v] = min(low[v], tin[to]); } else { dfs(to, v); low[v] = min(low[v], low[to]); if (low[to] > tin[v]) cout << v << " " << to << '\n'; } } } int find(int x) { if (p[x] == x) return x; return p[x] = find(p[x]); } int find2(int x) { if (p2[x] == x) return x; return p2[x] = find2(p2[x]); } void find_bridges() { timer = 0; visited.assign(n + 1, false); tin.assign(n + 1, -1); low.assign(n + 1, -1); for (int i = 1; i <= n; ++i) { if (!visited[i]) dfs(i); } } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for (int i = 1; i <= n; i++) { p[i] = i; p2[i] = i; } for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; if (find(a) != find(b)) { adjlist[a].push_back(b); adjlist[b].push_back(a); p[find(b)] = find(a); } else if (find2(a) != find2(b)) { adjlist[a].push_back(b); adjlist[b].push_back(a); p2[find2(a)] = find2(b); } } find_bridges(); }
#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...
#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...