Cod sursa(job #1309129)

Utilizator dica69Alexandru Lincan dica69 Data 5 ianuarie 2015 12:24:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include <list>
#include <deque>

using namespace std;
FILE *f1,*f2;
list <int> a[100001];
list <int> ::iterator it;
deque <int> c;
int n,m,s,i,x,y,d[100001],use[100001];

void BFS(int x)
{int nod;
c.push_front(x);
use[x]=1;
while (!c.empty())
{nod=c.front();c.pop_front();
for (it=a[nod].begin();it!=a[nod].end();it++)
if (!use[*it])
{use[*it]=1;
d[*it]=d[nod]+1;
c.push_back(*it);
}
}
}

int main()
{f1 = fopen("bfs.in","r");
f2 = fopen("bfs.out","w");
fscanf(f1,"%d%d%d",&n,&m,&s);
for (i=1;i<=m;i++)
{fscanf(f1,"%d%d",&x,&y);
a[x].push_back(y);
}
BFS(s);
for (i=1;i<=n;i++) if (!use[i]) fprintf(f2,"-1 "); else fprintf(f2,"%d ",d[i]);
fclose(f1);
fclose(f2);
    return 0;
}

//Challenges are what make life interesting and overcoming them is what makes life meaningful.