Cod sursa(job #1301010)

Utilizator bence21Bako Bence bence21 Data 25 decembrie 2014 14:36:39
Problema BFS - Parcurgere in latime Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<iostream>
using namespace std;
long t[10001][10001];
long n,m,s,i,r[100001],x,d[100001];
void a(long p)
{
    long j;
    bool jo[100001];
    for(j=0;j<d[p];j++)
    {
        if(r[p]+1<r[t[p][j]])
        {
            r[t[p][j]]=r[p]+1;
            jo[j]=1;
        }
        else jo[j]=0;
    }
    for(j=0;j<d[p];j++)
        if(jo[j])
        a(t[p][j]);
}
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f>>n>>m>>s;
    for(i=1;i<=n;i++)
    {
        r[i]=100001;
        f>>x;
        f>>t[x][d[x]++];
    }
    for(;i<=m;i++)
    {
        f>>x;
        f>>t[x][d[x]++];
    }
    r[s]=0;
    a(s);
    for(i=1;i<=n;i++)
        if(r[i]==100001)
        g<<-1<<" ";
    else
        g<<r[i]<<" ";
    f.close();
    g.close();
    return 0;
}