Nu aveti permisiuni pentru a descarca fisierul grader_test14.ok
Cod sursa(job #640966)
Utilizator | Data | 26 noiembrie 2011 21:18:45 | |
---|---|---|---|
Problema | BFS - Parcurgere in latime | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <stdio.h>
#include<vector>
#define n 100010
using namespace std;
vector<int> g[n];
int sor[n], tav[n], volt[n], start1, end1, akt,N,M,S;
int i,x,y;
int main()
{
freopen("bfs.in","r",stdin);
scanf ("%d %d %d",&N,&M,&S);
for (i=1;i<=N;i++)
tav[i]=-1;
for (i=1;i<=M;i++)
{
scanf("%d %d",&x,&y);
g[x].push_back(y);
}
sor[1]=S;volt[S]=1;tav[S]=0;start1=1;end1=1;
while (start1<=end1)
{
akt=sor[start1];
for (i=0;i<g[akt].size();i++)
if (volt[g[akt][i]]==0)
{
sor[++end1]=g[akt][i];
tav[g[akt][i]]=tav[akt]+1;
volt[g[akt][i]]=1;
}
start1++;
}
freopen("bfs.out","w",stdout);
for (i=1;i<=N;i++)
printf ("%d ",tav[i]);
return 0;
}