Cod sursa(job #1813492)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 22 noiembrie 2016 23:27:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda cerculdeinfo-lectia7-grafuri Marime 0.93 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#define INF 2000000000
#define MaxN 100001
using namespace std;
 
int N,M,S,v[MaxN]={},start,final;
vector<int>List[MaxN];
queue<int>Queue;
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&N,&M,&S);
    for(int i=1;i<=N;i++)
        v[i]=INF;
    v[S]=0;
    Queue.push(S);
    for(int i=1;i<=M;i++)
    {
        scanf("%d%d",&start,&final);
        List[start].push_back(final);
    }
    while(!Queue.empty())
    {
        for(int i=0;i<List[Queue.front()].size();i++)
            if(v[List[Queue.front()][i]]>v[Queue.front()]+1)
                Queue.push(List[Queue.front()][i]),v[List[Queue.front()][i]]=v[Queue.front()]+1;
        Queue.pop();
    }
    for(int i=1;i<=N;i++)
        if(v[i]==INF)
            printf("-1 ");
        else
        printf("%d ",v[i]);
    return 0;
}