Cod sursa(job #2232709)

Utilizator ianiIani Biro iani Data 20 august 2018 18:28:19
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

queue<int> q;

int cost[100000];

struct graf
{
    int y;
    graf* next;
}*a[100001];

int main()
{
    int n,m,s;
    fin>>n>>m>>s;
    for (int i=0; i<m; i++)
    {
        int x,y;
        fin>>x>>y;
        graf* nod=new graf;
        nod->y=y;
        nod->next=a[x];
        a[x]=nod;
    }
    for (int i=1; i<=n; i++)
        cost[i]=-1;
    q.push(s);
    cost[s]=0;
    while(!q.empty())
    {
        int nod=q.front();
        q.pop();
        graf *i=a[nod];
        while (i!=NULL)
        {
            if (cost[i->y]==-1)
            {
                q.push(i->y);
                cost[i->y]=cost[nod]+1;
            }
            i=i->next;
        }
    }
    for (int i=1; i<=n; i++)
        fout<<cost[i]<<' ';
    return 0;
}