# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
503901 |
2022-01-09T06:52:05 Z |
CraniXort |
Pipes (CEOI15_pipes) |
C++17 |
|
3314 ms |
14788 KB |
#include <bits/stdc++.h>
#define maxn 100005
#define fin std::cin
#define fout std::cout
// std::ifstream fin("pipes.in");
// std::ofstream fout("pipes.out");
std::vector <int> edge[maxn];
int disc[maxn], low[maxn], timer;
bool visited[maxn];
void dfs(int node, int parent) {
visited[node] = true;
disc[node] = low[node] = ++timer;
bool ok = false;
for(auto next: edge[node]) {
if(next == parent and ok == false) {
ok = true;
continue;
}
if(visited[next] == false) {
dfs(next, node);
low[node] = std::min(low[node], low[next]);
if(low[next] > disc[node]) {
fout << node << ' ' << next << '\n';
}
}
else{
low[node] = std::min(low[node], disc[next]);
}
}
}
class DSU {
int size;
std::vector <int> rank, parent;
public:
DSU(int size): size(size) {
rank.resize(size+1);
parent.resize(size+1);
for(int i = 1; i <= size; i ++)
parent[i] = i;
}
int findRoot(int node) {
if(parent[node] == node)
return node;
return (parent[node] = findRoot(parent[node]));
}
void combine(int node1, int node2) {
node1 = findRoot(node1);
node2 = findRoot(node2);
if(node1 == node2)
return;
if(rank[node1] < rank[node2])
std::swap(node1, node2);
parent[node2] = node1;
if(rank[node1] == rank[node2])
rank[node1] ++;
}
};
int main() {
// std::ios_base::sync_with_stdio(false);
// std::cin.tie(NULL);
// std::cout.tie(NULL);
int V, E;
fin >> V >> E;
DSU first(V), second(V);
for(int i = 0, src, dest; i < E; i ++) {
fin >> src >> dest;
if(first.findRoot(src) != first.findRoot(dest)) {
edge[src].push_back(dest);
edge[dest].push_back(src);
first.combine(src, dest);
}
else if(second.findRoot(src) != second.findRoot(dest)) {
edge[src].push_back(dest);
edge[dest].push_back(src);
second.combine(src, dest);
}
}
for(int i = 1; i <= V; i ++)
if(visited[i] == false)
dfs(i, -1);
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2636 KB |
Output is correct |
2 |
Correct |
1 ms |
2636 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
3148 KB |
Output is correct |
2 |
Correct |
7 ms |
2892 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
262 ms |
2952 KB |
Output is correct |
2 |
Correct |
257 ms |
2808 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
490 ms |
3808 KB |
Output is correct |
2 |
Correct |
582 ms |
3284 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
740 ms |
5484 KB |
Output is correct |
2 |
Correct |
615 ms |
5232 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1012 ms |
11184 KB |
Output is correct |
2 |
Correct |
864 ms |
7668 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1551 ms |
12376 KB |
Output is correct |
2 |
Correct |
1599 ms |
9568 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2176 ms |
14788 KB |
Output is correct |
2 |
Correct |
2049 ms |
9876 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2631 ms |
14732 KB |
Output is correct |
2 |
Correct |
2460 ms |
9880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3314 ms |
14184 KB |
Output is correct |
2 |
Correct |
3206 ms |
11372 KB |
Output is correct |