Pagini recente » Cod sursa (job #2123106) | Cod sursa (job #1520526) | Cod sursa (job #2058120) | Cod sursa (job #2707027) | Cod sursa (job #3341039)
{\rtf1\ansi\ansicpg1252\cocoartf2759
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww34000\viewh21380\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 #include <fstream>\
#include <vector>\
#include <stack>\
#define NRnoduri 100001\
using namespace std;\
\
ifstream cin("biconex.in");\
ofstream cout("biconex.out");\
\
int n, m, tata[NRnoduri], nivel[NRnoduri], nma[NRnoduri], nrc;\
vector <int> vecini[NRnoduri], componente[NRnoduri];\
stack <int> s;\
\
void DFS(int nod) \{\
s.push(nod);\
nivel[nod]= nivel[tata[nod]] + 1;\
nma[nod]= nivel[nod];\
for (int i=0; i<vecini[nod].size(); i++)\
\{\
int next= vecini[nod][i];\
if (nivel[next] and tata[nod]!=next)\
\{\
if (nma[nod]>nivel[next])\
nma[nod]= nivel[next];\
\}\
else if (!nivel[next])\
\{\
tata[next]= nod;\
DFS(next);\
if (nma[next]<nma[nod])\
nma[nod]= nma[next];\
if (nivel[nod]<=nma[next])\
\{\
nrc++;\
while (s.top()!=next)\
componente[nrc].push_back(s.top()), s.pop();\
componente[nrc].push_back(s.top()), s.pop();\
componente[nrc].push_back(nod);\
\}\
\}\
\}\
\}\
\
int main() \{\
cin>>n>>m;\
while (m--) \
\{\
int i, j;\
cin>>i>>j;\
vecini[i].push_back(j);\
vecini[j].push_back(i);\
\}\
DFS(1);\
cout<< nrc <<"\\n";\
for (int i=1; i<=nrc; i++, cout<<"\\n")\
for (int j= componente[i].size() -1; j>=0; j--)\
cout<< componente[i][j] <<" ";\
return 0;\
\}\
}