Pagini recente » Cod sursa (job #2231855) | Cod sursa (job #1092396) | Istoria paginii runda/aventurile_dariei_si_ale_lui_zeebah/clasament | Cod sursa (job #2603430) | Cod sursa (job #2629411)
#include <iostream>
#include <fstream>
using namespace std;
long long int n,M,a[10000][10000], vizitat[100000], st[100000],nr;
int next_vizitat()
{
for(int i=1; i<=n; i++)
{
if(vizitat[i]==0)
return i;
}
return 0;
}
void afisare()
{
for(int i=1; i<=n; i++)
cout<<st[i];
cout<<endl;
}
int main()
{
ifstream f("dfs.in");
ofstream g("dfs.out");
///citire nr de noduri si muchii;
f>>n>>M;
///transcriere muchii in matricea de adiacenta
int x,y;
for(int i=1; i<=M; i++)
{
f>>x>>y;
a[x][y]=1;
a[y][x]=1;
}
///initializare stiva cu nodul 1, de unde va porni parcurgerea
int k=1;
vizitat[k]=1;
int vf=1;
st[vf]=k;
st[0]=-1;
int all_vizitat=0;
///parcurgerea in latime
while(all_vizitat==0)
{
if(vf==0)
{ vf=1;
st[1]=next_vizitat();
vizitat[st[1]]=1;
if(st[1]==0)
{all_vizitat=1;
break;
}
nr++;
}
int i=1;
/// se cauta urmatorul vecin nevizitat al vf stivei
while((i<=n)&&((a[st[vf]][i]==0)||a[st[vf]][i]==1 && vizitat[i]==1))
{i++;
//afisare();
}
if(i==n+1)
{vf--;
}
else
{vf++;
st[vf]=i;
vizitat[i]=1;
}
}
g<<nr+1;
return 0;
}