Cod sursa(job #2372138)

Utilizator munteanue28no one munteanue28 Data 6 martie 2019 21:45:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define maxn 100005
using namespace std;
 
ifstream fi ("bfs.in");
ofstream fo ("bfs.out");

typedef struct nod {
		int info;
		nod *next;
		nod *pred;
	} *lista;
	
 
vector <int> A[maxn];
int c[maxn],G[maxn],dist[maxn];
 
 
int n,m,s;
 
void bfs(int nod)
{
    int l = 1; 
	dist[nod] = 0;
	c[l] = nod;
	
    for(int i = 1; i <= l; i++)
        for(int j = 0; j< G[c[i]]; j++)
        		if (dist[A[c[i]][j]] == -1)
            {
                c[++l] = A[c[i]][j];
                dist[c[l]] = dist[c[i]] + 1;
            }
}
	
 
int main()
{
    int x,y,i;
    
    fi>>n>>m>>s;
    
    while(m--)
    {
        fi>>x>>y;
        A[x].push_back(y);
    }
    
    memset(dist,-1,sizeof(dist));
    
    for (i = 1; i <= n; i++)
      G[i] = A[i].size();
    
    bfs(s);
    
    for(i=1;i<=n;i++)
          fo<<dist[i]<<' ';
    
    
    return 0;
}