Pagini recente » Cod sursa (job #2454034) | Cod sursa (job #1251381) | Cod sursa (job #404600) | Cod sursa (job #2954072) | Cod sursa (job #2274466)
#include <iostream>
#include <fstream>
#include <vector>
#define nmx 100005
using namespace std;
ifstream fin("biconex.in");
ofstream fout("biconex.out");
int n,m,i,j,nv,nz;
int h[nmx],mn[nmx];
struct pos
{ int x,y; } v[nmx];
vector<int> ad[nmx];
vector<pos> rz[nmx];
void cbic(int nd,int l)
{
h[nd]=mn[nd]=l;
for(int i: ad[nd])
{
if(h[i]==0)
{
v[++nv]={nd,i};
cbic(i,l+1);
if(mn[i]>=l)
{
nz++;
while(v[nv].x!=nd)
{
rz[nz].push_back(v[nv]);
nv--;
}
rz[nz].push_back(v[nv]);
nv--;
}
mn[nd]=min(mn[nd], mn[i]);
}
mn[nd]=min(mn[nd], h[i]);
}
}
int main() {
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>j>>nv;
ad[j].push_back(nv);
ad[nv].push_back(j);
}
nv=0;
cbic(1,1);
fout<<nz<<"\n";
for(i=1;i<=nz;i++)
{
for(auto j:rz[i])
fout<<j.x<<" ";
fout<<rz[i][0].y;
fout<<"\n";
}
}