Cod sursa(job #1474268)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 21 august 2015 17:29:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>
#include <vector>
#define LIM 100023
using namespace std;
struct qu
{
    int nod;
    int dist=0;
}a[LIM];
int n,m,vis[LIM];
vector<int>adj[LIM];
void bfs()
{
    int pt=2;
    for(int i=1;i<=n;i++)
    {
        if(a[i].nod==0) return;
        vector<int>::iterator it;
        for(it=adj[a[i].nod].begin();it!=adj[a[i].nod].end();++it)
        {
            if(vis[*it]==0)
            {
                a[pt].nod=*it;
                a[pt].dist=a[i].dist+1;
                vis[*it]=1;
                ++pt;
            }
        }
    }
}
int main()
{
    freopen ("bfs.in","r",stdin);
    freopen ("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&a[1].nod);
    vis[a[1].nod]=1;
    int x,y;
    for(int i=1;i<=m;++i)
    {
        scanf("%d%d",&x,&y);
        adj[x].push_back(y);
    }
    bfs();
    for(int i=1;i<=n;i++)
    {
        vis[a[i].nod]=a[i].dist;
        if(vis[i]==0) vis[i]=-1;
    }
    vis[a[1].nod]=0;
    for(int i=1;i<=n;i++) printf("%d ",vis[i]);
}