Cod sursa(job #1844901)

Utilizator n3fakdragos musceleanu n3fak Data 10 ianuarie 2017 16:55:50
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<bitset>
#include<algorithm>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int m,n,i,j,x,t,p;
bitset <1001> a[1001],viz;
struct nod{
    int c,d;
}cd[1001];
bool test(nod a, nod b)
{
    return a.c<b.c;
}
int main()
{
    f>>n>>m>>x;
    for(i=1;i<=m;i++){
        f>>t>>p;
        a[t][p]=1;
    }
    cd[1].c=x;
    p=1;t=1;
    viz[x]=1;
    while(p<=t)
    {
        x=cd[p].c;
        for(i=1;i<=n;i++)
            if(a[x][i] && !viz[i])
            {
                t++;
                cd[t].c=i;
                viz[i]=1;
                cd[t].d=cd[x].d+1;
            }
        p++;
    }
    for(i=1;i<=n;i++)
       if(!viz[i])
       {
           t++;
           cd[t].c=i;
           cd[t].d=-1;
       }
    sort(cd+1,cd+n+1,test);
    for(i=1;i<=n;i++)
        g<<cd[i].d<<' ';
    //f.close();
    //g.close();
    return 0;

}