Cod sursa(job #1641461)

Utilizator meeprrMelinte Paul meeprr Data 8 martie 2016 23:20:54
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> graf[100001];
int stnod[100001],stdist[100001],curr=1,k=1;
int dist[100001];

int main()
{   int n,m,s,x,y,i;

    f>>n>>m>>s;

    for(i=1;i<=n;i++) dist[i]=-1;

    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        graf[x].push_back(y);
    }

    stnod[1]=s;
    stdist[1]=0;

    while(curr<=k)
    {
        dist[stnod[curr]]=stdist[curr];
        for(i=0;i<graf[stnod[curr]].size();i++)
        {
            if(!(1+dist[graf[stnod[curr]][i]]))
            {
                k++;
                stnod[k]=graf[stnod[curr]][i];
                stdist[k]=stdist[curr]+1;
            }
        }
        curr++;
    }

    for(i=1;i<=n;i++) g<<dist[i]<<" ";

    g.close();

    return 0;
}