Submission #781220

#TimeUsernameProblemLanguageResultExecution timeMemory
781220NK_Pipes (CEOI15_pipes)C++17
0 / 100
490 ms65536 KiB
// Success consists of going from failure to failure without loss of enthusiasm #include <bits/stdc++.h> using namespace std; #define nl '\n' #define f first #define s second #define mp make_pair #define pb push_back using pi = pair<int, int>; template<class T> using V = vector<T>; const int nax = 1e5+5; pi stk[nax]; int disc[nax], crit[nax], cur, ti; V<pi> adj[nax]; void dfs(int u, int x) { disc[u] = ++ti; for(auto e : adj[u]) { int v, i; tie(v, i) = e; if (i == x) continue; if (disc[v] == -1) { stk[cur++] = mp(u, i); dfs(v, i); } else { int up = disc[v]; crit[i] = 0; // cout << v << " " << up << endl; while(cur > 0 && disc[stk[cur - 1].f] >= up) crit[stk[--cur].s] = 0; } } } int main() { cin.tie(0)->sync_with_stdio(0); cur = ti = 0; for(int i = 0; i < nax; i++) { stk[i] = mp(-1, -1); disc[i] = -1; crit[i] = 1; adj[i] = {}; } int N, M; cin >> N >> M; V<pi> E(M); for(int e = 0; e < M; e++) { int u, v; cin >> u >> v; --u, --v; E[e] = mp(u + 1, v + 1); adj[u].pb(mp(v, e)); adj[v].pb(mp(u, e)); } for(int i = 0; i < N; i++) if (disc[i] == -1) dfs(i, -1); for(int i = 0; i < M; i++) if (crit[i]) { cout << E[i].f << " " << E[i].s << endl; } return 0; }
#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...