Pagini recente » Cod sursa (job #1264439) | Cod sursa (job #3261072) | Cod sursa (job #2292870) | Cod sursa (job #2328325) | Cod sursa (job #398922)
Cod sursa(job #398922)
#include <fstream>
#include<iostream>
#include <vector>
using namespace std;
int * A[100001];
int c[100001],viz[100001],n,m,k,i,cost[100001];
void citeste_graf()
{ int x,y;
ifstream f("bfs.in");
f>>n>>m>>k;
for(i=0;i<=n;i++)
cost[i]=-1;
for(int i=1;i<=n;i++)
{
A[i]=(int *) realloc(A[i],sizeof(int));
A[i][0]=0;
}
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
A[x][0]++;
A[x]=(int *)realloc(A[x],(A[x][0]+1)*sizeof(int));
A[x][A[x][0]]=y;
}
/*for(i=1;i<=n;i++)
{
cout<<i;
for(int j=1;j<=A[i][0];j++)
cout<<" "<<A[i][j]<<" ";
cout<<endl;
}*/
}
void bfs(int nod)
{
int li,ls,nr_vecini;
li=1;ls=1;
c[li]=nod;viz[nod]=1;cost[nod]=0;
while (li<=ls)
{
nr_vecini=A[c[li]][0];
for(i=1;i<=nr_vecini;i++)
if (viz[A[c[li]][i]]==0)
{
ls++;
c[ls]=A[c[li]][i];
viz[A[c[li]][i]]=1;
cost[A[c[li]][i]]=cost[c[li]]+1;
}
li++;
}
}
void afisare()
{
ofstream g("bfs.out");
for(i=1;i<=n;i++)
g<<cost[i]<<" ";
g.close();
}
int main()
{
citeste_graf();
bfs(k);
afisare();
return 0;
}