Pagini recente » Cod sursa (job #557817) | Cod sursa (job #2442715) | Cod sursa (job #860817) | Cod sursa (job #900258) | Cod sursa (job #771713)
Cod sursa(job #771713)
#include<fstream>
using namespace std;
int n,m,s;
struct lista
{int nod;
lista* next;};
lista* a[100001];
void add(int x, int y)
{lista* q = new lista;
q->nod=y;
q->next=a[x];
a[x]=q;}
ifstream f("bfs.in");
ofstream g("bfs.out");
int i,viz[100001], coada[100001], begin,end;
int main()
{f>>n>>m>>s;
int x,y;
for( i=1; i<=m; i++)
{f>>x>>y;
add(x,y);}
begin=end=1;
coada[1]=s;
for(i=1; i<=n; i++)
viz[i]=-1;
viz[s]=0;
while(begin<=end)
{
lista* q = a[coada[begin]];
while(q)
{if(viz[q->nod]==-1)
{viz[q->nod]=viz[coada[begin]]+1;
end++;
coada[end]=q->nod;}
q=q->next;}
begin++; }
for(i=1; i<=n; i++)
g<<viz[i]<<" ";
f.close();
g.close();
return 0;}