Pagini recente » Cod sursa (job #1965630) | Cod sursa (job #625276) | Cod sursa (job #528608) | Cod sursa (job #380440) | Cod sursa (job #920659)
Cod sursa(job #920659)
#include <iostream>
#include <fstream>
using namespace std;
int gl_nr,nr,parc[100001],parc_backup[100001],st[100001],k,muchii_gasite;
ifstream fin ("dfs.in");
ofstream fout("dfs.out");
struct nod {int inf; nod * urm; int v;} * L[100001];
void bfn (nod *&prim, int n)
{
nod *p = new nod;
p->inf=n;
p->v=0;
p->urm=prim;
prim=p;
}
int parc_ad(int x)
{
nr++;
gl_nr++;
parc[nr]=x;
parc_backup[gl_nr]=x;
if(L[x]==0)
return nr;
L[x]->v=1;
nod *p;
p=L[x];
while(p!=0)
{
if(L[p->inf]->v==0)
{
parc_ad(p->inf);
}
p=p->urm;
}
return nr;
}
int main()
{
int j,n,m,x,y,i;
fin >> n >> m;
for(i=1;i<=m;i++)
{
fin >> x >> y;
bfn(L[x],y);
bfn(L[y],x);
}
int combined = 0;
int first_node = 1;
int temp=0;
while(combined<n)
{
nr=0;
temp++;
int max = parc_ad(first_node);
muchii_gasite+=max;
combined +=max;
//fout << "Componenta: ";
//for(i=1;i<=max;i++)
// fout<<parc[i]<<" ";
for(i=1;i<=n;i++)
{
int ap=0;
for(j=0;j<=combined;j++)
if(i==parc_backup[j])
ap++;
if(ap==0)
{
first_node = i;
i=n+1;
}
}
}
fout << temp;
return 0;
}