Pagini recente » Cod sursa (job #1583649) | Cod sursa (job #910667) | Cod sursa (job #2267567) | Cod sursa (job #453725) | Cod sursa (job #2169872)
#include <fstream>
#include <vector>
#define Nmax 100002
using namespace std;
ifstream f("biconex.in");
ofstream g("biconex.out");
int n,m,NV[Nmax],x,y;
vector<int> v[Nmax],H;
vector<vector<int> > ans;
int dfs(int nod,int ant, int niv){
int mn = niv;
NV[nod] = niv;
H.push_back(nod);
for (auto it : v[nod]){
if (it==ant) continue;
if (NV[it]){
mn = min(mn,NV[it]);
continue;
}
mn = min(mn,dfs(it,nod,niv+1));
}
if (mn>=niv-1 && nod!=1){
ans.push_back(*new vector<int>);
while (!H.empty() && H.back()!=nod){
ans.back().push_back(H.back());
H.pop_back();
}
ans.back().push_back(H.back());
H.pop_back();
ans.back().push_back(H.back());
}
return mn;
}
int main()
{
f>>n>>m;
for (int i=1;i<=m;i++){
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1,-1,1);
g<<ans.size()<<'\n';
for (auto it : ans){
for (auto it2 : it) g<<it2<<' ';
g<<'\n';
}
return 0;
}