# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
24679 | 2017-06-11T15:52:36 Z | Bruteforceman | Pipes (CEOI15_pipes) | C++11 | 1607 ms | 13792 KB |
#include "bits/stdc++.h" using namespace std; int *par; int *bic; vector <int> *g; int *low, *disc; bitset <100005> vis; vector <int> l, r; int rootPar(int x) { if(par[x] == x) return x; return par[x] = rootPar(par[x]); } int rootBic(int x) { if(bic[x] == x) return x; return bic[x] = rootBic(bic[x]); } void joinPar(int x, int y) { x = rootPar(x); y = rootPar(y); if(x != y) { par[x] = y; } } void joinBic(int x, int y) { x = rootBic(x); y = rootBic(y); if(x != y) { bic[x] = y; } } int tym; void dfs(int x, int parent) { vis[x] = 1; low[x] = disc[x] = ++tym; bool see = false; for(auto i : g[x]) { if (!see && i == parent) { see = true; continue; } if(vis[i] == 0) { dfs(i, x); low[x] = min(low[x], low[i]); if(disc[x] < low[i]) { l.push_back(x); r.push_back(i); } } else if (vis[i] == 1) { low[x] = min(low[x], disc[i]); } } } int main(int argc, char const *argv[]) { int n, m; scanf("%d %d", &n, &m); par = new int [n + 5]; bic = new int [n + 5]; for(int i = 1; i <= n; i++) { par[i] = i; bic[i] = i; } for(int i = 1; i <= m; i++) { int p, q; scanf("%d %d", &p, &q); if(rootPar(p) != rootPar(q)) { joinPar(p, q); l.push_back(p); r.push_back(q); } else if (rootBic(q) != rootBic(p)) { joinBic(p, q); l.push_back(p); r.push_back(q); } } delete par; delete bic; g = new vector <int> [n + 5]; for(size_t i = 0; i < l.size(); i++) { g[l[i]].push_back(r[i]); g[r[i]].push_back(l[i]); } l.clear(); r.clear(); low = new int [n + 5]; disc = new int [n + 5]; for(int i = 1; i <= n; i++) { if(vis[i] == 0) { dfs(i, 0); } } for(size_t i = 0; i < l.size(); i++) { printf("%d %d\n", l[i], r[i]); } delete low; delete disc; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 256 KB | Output is correct |
2 | Correct | 2 ms | 256 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 1024 KB | Output is correct |
2 | Correct | 6 ms | 768 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 120 ms | 724 KB | Output is correct |
2 | Correct | 118 ms | 596 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 211 ms | 1632 KB | Output is correct |
2 | Correct | 251 ms | 1272 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 345 ms | 3568 KB | Output is correct |
2 | Correct | 289 ms | 3320 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 493 ms | 9876 KB | Output is correct |
2 | Correct | 469 ms | 7020 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 769 ms | 11192 KB | Output is correct |
2 | Correct | 729 ms | 8628 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1018 ms | 13792 KB | Output is correct |
2 | Correct | 957 ms | 9696 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1255 ms | 13780 KB | Output is correct |
2 | Correct | 1282 ms | 9704 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1607 ms | 13072 KB | Output is correct |
2 | Correct | 1437 ms | 10448 KB | Output is correct |