Submission #527184

#TimeUsernameProblemLanguageResultExecution timeMemory
527184ecxxPipes (CEOI15_pipes)C++17
30 / 100
3450 ms65540 KiB
#include <bits/stdc++.h> using namespace std; template <typename T> class vec { T* arr; public: int cap; int cur; vec() { arr = new T[1]; cap = 1; cur = 0; } void push(T data) { if (cur==cap) { T* temp = new T[2*cap]; for (int i = 0; i < cur; i++) { temp[i] = arr[i]; } delete[] arr; cap*=2; arr=temp; } arr[cur] = data; cur++; } T get(int index) { return arr[index]; } }; int N; const int MAXN = 100005; int depth[MAXN] = {0}; int low[MAXN] = {0}; vec<int> AL[MAXN]; void AP(int i, int d, int pa) { depth[i] = d; low[i] = d; int paedges = 0, ch; for (int k = 0; k < AL[i].cur; k++) { ch = AL[i].get(k); if (ch==pa) { paedges++; continue; } if (depth[ch] > -1) { low[i] = min(low[i], depth[ch]); } else { AP(ch, d+1, i); low[i] = min(low[i], low[ch]); } } if (pa==-1) return; if (low[i] > depth[pa] && paedges == 1) { cout << i+1 << " " << pa+1 << "\n"; } } int main() { int N, M, a, b; cin >> N >> M; for (int i = 0; i < M; i++) { cin >> a >> b; a--;b--; AL[a].push(b); AL[b].push(a); } for (int i = 0; i < N; i++) { depth[i] = -1; } for (int i = 0; i < N; i++) { if (depth[i] == -1) AP(i,0,-1); } }
#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...