Submission #731327

#TimeUsernameProblemLanguageResultExecution timeMemory
731327esomerPipes (CEOI15_pipes)C++17
10 / 100
2239 ms65536 KiB
#include<bits/stdc++.h> using namespace std; #define endl "\n" typedef long long int ll; const int MOD = 1e9 + 7; vector<pair<int, int>> pipes; int cnt = 1; void DFS(int x, vector<vector<int>>& adj, vector<int>& vis, vector<int>& mn, int p){ vis[x] = cnt; mn[x] = cnt; cnt++; for(int node : adj[x]){ if(node == p) continue; if(vis[node] > 0){ mn[x] = min(mn[x], vis[node]); }else{ DFS(node, adj, vis, mn, x); mn[x] = min(mn[x], mn[node]); if(mn[node] > vis[x]){ pipes.push_back({node, x}); } } } } void solve(){ int n, m; cin >> n >> m; vector<vector<int>> adj(n); for(int i = 0; i < m; i++){ int u, v; cin >> u >> v; u--; v--; adj[u].push_back(v); adj[v].push_back(u); } vector<int> vis(n, 0); vector<int> mn(n, 0); for(int i = 0; i < n; i++){ if(!vis[i]){ DFS(i, adj, vis, mn, -1); } } for(auto p : pipes) cout << p.first + 1 << " " << p.second + 1 << endl; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); //~ int tt; cin >> tt; int tt = 1; for(int t = 1; t <= tt; t++){ solve(); } }
#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...