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 <iostream>
#include <bits/stdc++.h>
using namespace std;
#define a first
#define b second
#define pb push_back
int n,m;
int par[100001];
int par2[100001];
int find(int no){
if(par[no]==no){
return no;
}
par[no]=find(par[no]);
return par[no];
}
int find2(int no){
if(par2[no]==no){
return no;
}
par2[no]=find2(par2[no]);
return par2[no];
}
vector<int> adj[100001];
int cco=1;
map<pair<int,int>,int> kk;
void dfs(int no,int par3=-1){
par[no]=cco;
cco+=1;
for(auto nn:adj[no]){
if(par[nn]>0){
if(nn==par3){
continue;
}
if(par[nn]>=par[no]){
continue;
}
par2[nn]-=1;
par2[no]+=1;
}
else{
dfs(nn,no);
if(par2[nn]==0){
if(kk[{no,nn}]==1){
cout<<no+1<<" "<<nn+1<<endl;
}
}
par2[no]+=par2[nn];
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(int i=0;i<n;i++){
par[i]=i;
par2[i]=i;
}
int aa,bb;
int cc,dd;
int e,f;
for(int i=0;i<m;i++){
cin>>cc>>dd;
cc-=1;
dd-=1;
kk[{cc,dd}]+=1;
kk[{dd,cc}]+=1;
adj[cc].pb(dd);
adj[dd].pb(cc);
continue;
//cout<<cc<<" "<<dd<<endl;
aa=find(cc);
// cout<<aa;
bb=find(dd);
// cout<<"::"<<bb<<endl;
if(aa==bb){
e=find2(cc);
f=find2(dd);
if(e==f){
continue;
}
adj[cc].pb(dd);
adj[dd].pb(cc);
par2[e]=f;
}
else{
par[aa]=bb;
adj[cc].pb(dd);
adj[dd].pb(cc);
}
// cout<<cc<<",,,,,,,,"<<dd<<endl;
}
//vis=par
//dp=par2
for(int i=0;i<n;i++){
par[i]=0;
par2[i]=0;
}
for(int i=0;i<n;i++){
if(par[i]==0){
dfs(i);
}
}
return 0;
}
# | 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... |