#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
#define F first
#define S second
#define pb push_back
#define endl '\n'
#define Mp make_pair
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " = " << x << endl
#define set_dec(x) cout << fixed << setprecision(x);
#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define file_io freopen("in.txt" , "r+" , stdin) ; freopen("out.txt" , "w+" , stdout);
ll mod = 1e9+7;
ll power(ll a, ll b)
{
return (!b ? 1 : (b & 1 ? a * power(a * a % mod, b / 2) % mod : power(a * a % mod, b / 2) % mod));
}
const int N= 100023;
vector<int> g[N] ;
int mn[N] , h[N] , par1[N] , par2[N] , vis[N];
int getPar1(int v){
return (par1[v]==-1)?v: getPar1(par1[v]);
}
int getPar2(int v){
return (par2[v]==-1)? v: getPar2(par2[v]);
}
bool Union1(int v, int u){
v= getPar1(v); u = getPar1(u);
if(u==v) return 0;
par1[u]=v;
return 1;
}
bool Union2(int v, int u){
v= getPar2(v); u = getPar2(u);
if(u==v) return 0;
par2[u]=v;
return 1;
}
void dfs(int v, int p ){
vis[v]=1;
mn[v]=h[v];
int fuck = 0;
for(int u: g[v]){
if(u==p && !fuck ){fuck=1; continue;}
if(!vis[u]){
h[u]= h[v]+1;
dfs(u,v);
mn[v]= min (mn[v], mn[u]);
}
else{
mn[v]= min(mn[v] , h[u]);
}
}
if(p && mn[v]==h[v]) cout<<p<<" "<<v<<endl;
}
int main(){
fast_io
int n , m; cin>>n>>m;
for(int i=1; i<=n; i++){
par1[i]=-1;
par2[i]=-1;
}
for(int i=1 ;i<=m; i++){
int u ,v; cin>>v>>u;
if(Union1(v,u)){
g[v].pb(u); g[u].pb(v);
}
else if(Union2(u,v)){
g[v].pb(u); g[u].pb(v);
}
}
for(int i=1; i<=n; i++) if(!vis[i]) dfs(i,0);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Correct |
1 ms |
2644 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
23 ms |
3164 KB |
Output is correct |
2 |
Correct |
10 ms |
2912 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2292 ms |
2972 KB |
Output is correct |
2 |
Correct |
431 ms |
2840 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5011 ms |
3232 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5065 ms |
4104 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5091 ms |
5784 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5089 ms |
6160 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5096 ms |
6632 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5079 ms |
6652 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5094 ms |
6528 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |