Submission #290626

#TimeUsernameProblemLanguageResultExecution timeMemory
290626davooddkareshkiPipes (CEOI15_pipes)C++17
10 / 100
2557 ms65540 KiB
#include<bits/stdc++.h> using namespace std; //#define int long long #define F first #define S second #define pii pair<int,int> #define mpr make_pair typedef long long ll; const int maxn = 1e5+10; const int mod = 1e9+7; const int inf = 1e9+10; int n, m; vector<int> g[maxn]; bool mark[maxn]; int h[maxn], lo[maxn], Root; vector<pii> ans; void dfs(int v, int p = -1) { mark[v] = 1; lo[v] = inf; for(auto u : g[v]) if(mark[u] && u != p) lo[v] = min(lo[v],h[u]); for(auto u : g[v]) if(!mark[u]) { h[u] = h[v] + 1; dfs(u,v); lo[v] = min(lo[v], lo[u]); } if(v != Root && lo[v] >= h[v]) ans.push_back({v,p}); } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>> n >> m; for(int i = 1, u, v; i <= m; i++) { cin>> u >> v; g[u].push_back(v); g[v].push_back(u); } for(int i = 1; i <= n; i++) if(!mark[i]) {Root = i; dfs(i);} for(auto e : ans) cout<< e.F <<" "<< e.S <<"\n"; } /* 10 11 1 7 1 8 1 6 2 8 6 7 5 8 2 5 2 3 2 4 3 4 10 9 */
#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...