Pagini recente » Cod sursa (job #3293176) | Cod sursa (job #2825091) | Cod sursa (job #2622170) | Cod sursa (job #3269488) | Cod sursa (job #2274860)
#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,p,nz;
int h[nmx],mn[nmx],v[nmx];
vector<int> ad[nmx],rz[nmx];
void cbic(int nd,int l)
{
h[nd]=mn[nd]=l;
v[++nv]=nd;
for(int i: ad[nd])
{
if(h[i]==0)
{
int p=nv;
cbic(i,l+1);
mn[nd]=min(mn[nd], mn[i]);
if(mn[i]>=l)
{
rz[++nz].push_back(nd);
while(p<nv) rz[nz].push_back(v[nv--]);
}
}
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(int j:rz[i])
fout<<j<<" ";
fout<<"\n";
}
}