#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= 1e5+23;
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];
for(int u: g[v]){
if(u==p) 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(){
int n , m; cin>>n>>m;
for(int i=1; i<=n; i++) par1[i]=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 |
Incorrect |
2 ms |
2644 KB |
Wrong number of edges |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
29 ms |
3224 KB |
Output is correct |
2 |
Incorrect |
13 ms |
2976 KB |
Wrong number of edges |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2424 ms |
8436 KB |
Output is correct |
2 |
Incorrect |
574 ms |
8168 KB |
Wrong number of edges |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5035 ms |
6576 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5040 ms |
5440 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5071 ms |
7500 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5072 ms |
7844 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5045 ms |
8524 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5092 ms |
8420 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5034 ms |
8520 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |