Cod sursa(job #3263775)

Utilizator dagfatiteiu david dagfa Data 16 decembrie 2024 14:38:06
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <queue>
#include <fstream>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

long long viz[100005],m,n,st,dr,s,a[10005][10005];

void citire()
{
    f>>n>>m>>s;
    for(int i = 1;i<=m;i++)
    {
        f>>st>>dr;
        a[st][dr] = 1;
    }
    for(int i = 1;i<=n;i++)
        viz[i] = -1;
}

void bfs(int start)
{
    int x;
    queue<int> q;
    q.push(start);
    viz[start]=0;
    while(!q.empty())
    {
        x = q.front();
        q.pop();
        for(int i=1; i<=n; i++)
            if(a[x][i]==1 && viz[i]==-1){
                q.push(i);
                a[x][i]=0;
                viz[i] = viz[x]+1;
            }
    }
    for(int i=1; i<=n; i++)
        g<<viz[i]<<" ";
}
int main()
{
    citire();
    bfs(s);
    return 0;
}