Pagini recente » Cod sursa (job #2551659) | Cod sursa (job #123981) | Cod sursa (job #2124194) | Cod sursa (job #708852) | Cod sursa (job #3265685)
#include <bits/stdc++.h>
using namespace std;
ifstream f("biconex.in");
ofstream g("biconex.out");
int a[101][101];
int cer;
int n,m;
int v[101];
int niv[101];
int nma[101];
int pct[101];
int p,cnt;
stack<int> stiva;
struct muchie
{
int x;
int y;
};
muchie q[101];
vector<int>comp[101];
int crt;
void adart(int k,int tata)
{
v[k]=1;
niv[k]=niv[tata]+1;
nma[k]=niv[k];
stiva.push(k);
int i;
for(i=1;i<=n;i++)
{
if(i!=tata && a[k][i]==1)
if(v[i]==1)
{
if(nma[k]>niv[i])
nma[k]=niv[i];
}
else
{
adart(i,k);
if(nma[k]>nma[i])
nma[k]=nma[i];
if(niv[k]<=nma[i] && k!=1)
{
p++;
pct[p]=k;
}
if(nma[i]>niv[k])
{
cnt++;
q[cnt].x=k;
q[cnt].y=i;
}
crt++;
if(niv[k]<=nma[i])
{
while(stiva.top()!=i)
{
comp[crt].push_back(stiva.top());
stiva.pop();
}
comp[crt].push_back(i);
comp[crt].push_back(k);
stiva.pop();
}
}
}
}
int main()
{
f>>cer;
f>>n>>m;
int i,j,x,y;
for(i=1;i<=m;i++)
{
f>>x>>y;
a[x][y]=a[y][x]=1;
}
adart(1,0);
sort(pct+1,pct+p+1);
if(cer==3)
{
for(i=1;i<=p;i++)
g<<pct[i]<<" ";
}
else
if(cer==2)
{
for(i=1;i<=cnt;i++)
g<<q[i].x<<" "<<q[i].y<<endl;
}
else
{
for(i=1;i<=crt;i++,g<<endl)
{
for(auto j:comp[i])
g<<j<<" ";
}
}
return 0;
}