# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
167284 | mhy908 | Pipes (CEOI15_pipes) | C++14 | 1845 ms | 22192 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.
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define F first
#define S second
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
typedef pair<LL, LL> pll;
struct UNION_FIND{
int par[100001];
UNION_FIND(){for(int i=1; i<=100000; i++)par[i]=i;}
int findpar(int num){return num==par[num]?num:par[num]=findpar(par[num]);}
void mergepar(int a, int b){par[findpar(a)]=findpar(b);}
bool query(int a, int b){return findpar(a)==findpar(b);}
}uf1, uf2;
vector<int> link[100001];
int n, m;
int disc[10001], lowlink[100001], par[100001], t;
void dfs(int u)
{
disc[u]=lowlink[u]=++t;
bool temp=false;
for(int i=0; i<link[u].size(); i++){
if(link[u][i]==par[u]&&!temp)temp=true;
else{
if(!disc[link[u][i]]){
par[link[u][i]]=u;
dfs(link[u][i]);
if(lowlink[link[u][i]]>disc[u])printf("%d %d\n", u, link[u][i]);
lowlink[u]=min(lowlink[u], lowlink[link[u][i]]);
}
else lowlink[u]=min(lowlink[u], disc[link[u][i]]);
}
}
}
int main()
{
scanf("%d %d", &n, &m);
for(int i=1; i<=m; i++){
int u, v;
scanf("%d %d", &u, &v);
if(!uf1.query(u, v)){
uf1.mergepar(u, v);
link[u].pb(v);
link[v].pb(u);
}
else if(!uf2.query(u, v)){
uf2.mergepar(u, v);
link[u].pb(v);
link[v].pb(u);
}
}
for(int i=1; i<=n; i++){
if(!disc[i])dfs(i);
}
}
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... |