# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
244470 | tqbfjotld | Pipes (CEOI15_pipes) | C++14 | 1539 ms | 65540 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
///lib code still allowed right
#include <bits/stdc++.h>
using namespace std;
int low[100005];
int order[100005];
int cur = 1;
vector<pair<int,int> > adjl[100005]; ///(node,id)
int root = 0;
///ensure no duplicate edges first though
void dfs(int node, int pEdge){
order[node] = cur;
cur++;
low[node] = order[node];
for (auto x : adjl[node]){
if (order[x.first]==-1){
dfs(x.first,x.second);
if (low[node]==-1 || (low[x.first]!=-1 && low[x.first]<low[node])){
low[node] = low[x.first];
}
if (node!=root){
if (low[x.first]==-1 || low[x.first]>=order[node]){
}
}
else{
}
}
else if (x.second!=pEdge){
if (low[node]==-1 || order[x.first]<low[node]) low[node] = order[x.first];
}
}
}
//ans is number of components after removing node (>1 if is articulation point)
//bridge break a component if it is removed
//HAVE NOT TESTED YET (but should be correct though)
inline bool isBridge(int a, int b){
if (order[b]<order[a]) swap(a,b);
return low[b]>order[a];
}
int n,e;
int main(){
scanf("%d%d",&n,&e);
for (int x = 0; x<e; x++){
int a,b;
scanf("%d%d",&a,&b);
a--;b--;
adjl[a].push_back({b,x});
adjl[b].push_back({a,x});
}
memset(low,-1,sizeof(low));
memset(order,-1,sizeof(order));
for (root = 0; root<n; root++){
if (order[root]==-1) dfs(root,-1);
}
for (int x = 0; x<n; x++){
//printf("%d: order: %d, low: %d\n",1+x,order[x],low[x]);
}
for (int x = 0; x<n; x++){
for (auto y : adjl[x]){
if (y.first<x){
if (isBridge(x,y.first)){
printf("%d %d\n",x+1,y.first+1);
}
}
}
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |