Skip to content
c++
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int N=1e5+5;
constexpr int M=6e5+5;

int n,m;
int head[N],to[M],nxt[M],tot=1;
void add(int u,int v){
    nxt[++tot]=head[u];
    to[tot]=v;
    head[u]=tot;
}
int dfn[N],low[N],timer;
int a[M>>1],b[M>>1],cnt;

bool tarjan(int u,int e){
    dfn[u]=low[u]=++timer;
    for(int i=head[u];i;i=nxt[i]){
        if((i^1)==e)continue;
        int v=to[i];
        if(!dfn[v]){
            if(!tarjan(v,i))return false;
            low[u]=std::min(low[u],low[v]);
            if(low[v]>dfn[u]){
                return false;
            }
            a[cnt]=u;
            b[cnt++]=v;
        }else if(dfn[v]<dfn[u]){
            low[u]=std::min(low[u],dfn[v]);
            a[cnt]=u;
            b[cnt++]=v;
        }
    }
    return true;
}
void fc() {
    std::cin>>n>>m;
    for(int i=0;i<m;i++){
        int u,v;std::cin>>u>>v;
        add(u,v);add(v,u);
    }

    if(!tarjan(1,0)){
        std::cout<<"0";return;
    }

    for(int i=0;i<cnt;i++)std::cout<<a[i]<<" "<<b[i]<<"\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    while (t--) fc();
    return 0;
}