Cod sursa(job #1830973)

Utilizator stefantagaTaga Stefan stefantaga Data 17 decembrie 2016 11:55:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue <int> c;
struct nod
{
    int info;
    nod*urm;
}*v[100001];
int viz[100001];
void adaugare (nod*&prim,int x)
{
    nod*nou;
    nou=new nod;
    nou->info=x;
    nou->urm=NULL;
    if (prim==NULL)
    {
        prim=nou;
    }
    else
    {
        nou->urm=prim;
        prim=nou;
    }
}
void bfs(int x)
{
    nod*p;
    c.push(x);
    viz[x]=1;
    while (c.size()!=0)
    {
        for (p=v[x];p;p=p->urm)
        {
            if (viz[p->info]==0)
            {
                viz[p->info]=viz[x]+1;
                c.push(p->info);
            }
        }
        c.pop();
        x=c.front();
    }
}
int main()
{
    int n,m,x,z,y,i;
    f>>n>>m>>x;
    for (i=1;i<=m;i++)
    {
        f>>z>>y;
        if (x!=y)
        {
           adaugare (v[z],y);
        }
    }
    bfs(x);
    for (i=1;i<=n;i++)
    {
        g<<viz[i]-1<<" ";
    }
    return 0;
}