Cod sursa(job #1919475)

Utilizator ZIPPOIon Gheo ZIPPO Data 9 martie 2017 19:40:34
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[2300][2300],c[2300],viz[2300],d[2300],i,j,m,n,x,y,s,dr=1,st=1,inf=99999;
ofstream g("bfs.out");
void citire()
{
    ifstream f("bfs.in");
    f>>n>>m>>s;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            a[i][j]=inf;
    for(i=1; i<=m; i++)
    {
        f>>x>>y;
        a[x][y]=1;
    }

}

void travlat(int s)
{
    int ok=1;
    c[1]=s;
    viz[s]=1;

    while(st<=dr)
    {
        for(i=1; i<=n; i++)
            if(a[c[st]][i]==1 && viz[i]==0)
            {
                dr++;
                c[dr]=i;
                viz[i]=1;
                d[dr]=1+d[st];
            }
        st++;
    }
}
int main()
{
    int k=0;
    citire();
    travlat(s);
    for(i=1; i<dr; i++)
        for(j=i+1; j<=dr; j++)
            if(c[i]>c[j])
            {
                swap(d[i],d[j]);
                swap(c[i],c[j]);
            }
    for(i=1; i<=n; i++)
        if(viz[i]==1)
        {
            g<<d[i-k]<<" ";
            k=0;
        }
        else
        {
            g<<-1<<" ";
            k++;
        }
}