Cod sursa(job #2429484)

Utilizator patrickdanDan patrick patrickdan Data 9 iunie 2019 19:35:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include<vector>
using namespace std;

vector <int> G[100001];
vector <int> q;
int cost[100001];
bool viz[100001];
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int n,m,s,orig,dest,last,i;
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&orig,&dest);
        G[orig].push_back(dest);
    }
    q.push_back(s);
    viz[s]=1;
    int pas=0;
    while(q.size()-1>=pas)
    {
    int last=q[pas];
    for(i=G[last].size()-1;i>=0;i--){
        if(viz[G[last][i]]==0){
            q.push_back(G[last][i]);
            cost[G[last][i]]=cost[last]+1;
            viz[G[last][i]]=1;
        }
        G[last].pop_back();
    }
    pas++;
    }
    for(i=1;i<=n;i++){
        if(cost[i]!=0 || i==s)
            printf("%d ",cost[i]);
        else
            printf("-1 ");
    }
    return 0;
}