Pagini recente » Cod sursa (job #2476505) | Cod sursa (job #2675557) | Cod sursa (job #2292894) | Cod sursa (job #1962704) | Cod sursa (job #2407926)
#include <bits/stdc++.h>
using namespace std;
ifstream in("a.in");
//ofstream out("base3.out");
vector<int> v[100002],c[100002];
int l[100002],a[100002],N;
stack<int> s;
void bitconnet(int nr)
{
s.push(nr);
for(auto it:v[nr])
if(!l[it])
{
l[it]=a[it]=l[nr]+1;
bitconnet(it);
a[nr]=min(a[nr],a[it]);
if(a[it]>=l[nr])
{
c[++N].push_back(nr);
while(!s.empty())
{
c[N].push_back(s.top());
if(s.top()==it)
{
s.pop();
break;
}
s.pop();
}
}
}
else
a[nr]=min(a[nr],l[it]);
}
int main()
{
int n,m,i,j;
in>>n>>m;
while(m--)
{
in>>i>>j;
v[i].push_back(j);
v[j].push_back(i);
}
l[1]=a[1]=1;
bitconnet(1);
cout<<N<<"\n";
for(i=1;i<=N;i++)
{
for(auto it:c[i])
cout<<it<<" ";
cout<<"\n";
}
return 0;
}