Nu aveti permisiuni pentru a descarca fisierul grader_test14.in
Cod sursa(job #2016024)
Utilizator | Data | 28 august 2017 14:22:18 | |
---|---|---|---|
Problema | BFS - Parcurgere in latime | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.94 kb |
#include <cstdio>
#include <queue>
using namespace std;
int n,m,a[10000][10000],s,cost[100000],viz[100000];
queue <int> q;
void Read()
{
int aux1,aux2;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%i %i %i",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%i %i",&aux1,&aux2);
a[aux1][aux2] = 1;
}
}
void BFS()
{
for(int i=1;i<=n;i++)
{
cost[i] = -1;
viz[i] = 0;
}
cost[s] = 0;
viz[s] = 1;
q.push(s);
while(!q.empty())
{
for(int i=1;i<=n;i++)
{
if(a[q.front()][i] == 1 && viz[i] == 0)
{
cost[i] = cost[q.front()] + 1;
viz[i] = 1;
q.push(i);
}
}
q.pop();
}
}
int main()
{
Read();
BFS();
for(int i=1;i<=n;i++)
printf("%i ",cost[i]);
return 0;
}