Cod sursa(job #1315403)

Utilizator sebinsteanuDumitriu Sebastian sebinsteanu Data 12 ianuarie 2015 19:48:34
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n,m,t[100000],viz[100000],nr=1;
struct nod
{
    int val;
    nod *urm;
} tnod;
nod *p,*nou,*v[100000];

void bfs(int a)
{
    int ok=0;
    p=v[a];
    if(viz[p->val]==0)
    {
        while(p!=NULL)
            if(viz[p->val]!=0)
                p=p->urm;
            else
            {
                cout<<p->val<<" ";
                viz[p->val]=1;
                t[p->val]+=nr;
                p=p->urm;
            }
        ok=1;
    }
    p=v[a];
    nr++;
    if(p!=NULL&&ok==1)
        bfs(p->val);
}

int main()
{
    int i,j,x,y,s;
    in>>n>>m>>s;
    for(i=1; i<=m; i++)
    {
        in>>x>>y;
        nou=new nod;
        nou->val=y;
        nou->urm=v[x];
        v[x]=nou;
    }
    in.close();
    viz[s]=1;
    cout<<s<<" ";
    bfs(s);
    for(i=1; i<=n; i++)
        if(viz[i]==1)
        out<<t[i]<<" ";
        else out<<-1<<" ";
    out.close();
    return 0;
}