Cod sursa(job #1466808)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 30 iulie 2015 16:33:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
#define fin "bfs.in"
#define fou "bfs.out"
#define Max 100010
#define inf 1000000000
using namespace std;
ifstream t1(fin);
ofstream t2(fou);
int cost[Max],n,m,s,viz[Max];

vector<int> rel[Max];
queue<int> c;

int main()
{
    t1>>n>>m>>s;
    int i,j,nod,nod2;
    for(i=1;i<=m;i++)
    {
        t1>>nod>>nod2;
        rel[nod].push_back(nod2);
    }
    for(i=1;i<=n;i++)  { cost[i]=inf; viz[i]=0; }
    cost[s]=0; viz[s]=1;
    c.push(s);
    while(!c.empty())
    {
        nod=c.front();
        c.pop();
        for(i=0;i<rel[nod].size();i++)
            if(viz[rel[nod][i]]==0)
            {
                c.push(rel[nod][i]);
                cost[rel[nod][i]]=cost[nod]+1;
                viz[rel[nod][i]]=1;
            }
    }
    for(i=1;i<=n;i++)
        if(cost[i]!=inf) t2<<cost[i]<<' ';
                    else t2<<"-1 ";
    t1.close();
    t2.close();
}