Pagini recente » Cod sursa (job #655475) | Cod sursa (job #2744290) | Cod sursa (job #2251412) | Cod sursa (job #3153173) | Cod sursa (job #393702)
Cod sursa(job #393702)
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
#define foreach(v) for(typeof (v).begin() it=(v).begin();it!=(v).end();it++)
vector<int> G[100005];
int lg[100005];
vector<int> tata(100005);
queue<int> coada;
int m,n,s;
ofstream fout("bfs.out");
void bfs()
{ int v;
tata[s]=-1;
coada.push(s);
lg[s]=0;
while(!coada.empty())
{
v=coada.front();
coada.pop();
foreach(G[v])
if(tata[*it]==0)
{tata[*it]=v;
coada.push(*it);
lg[*it]=lg[tata[*it]]+1;
}
}
}
int main()
{int i,alfa,beta;
ifstream fin("bfs.in");
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{fin>>alfa>>beta;
G[alfa].push_back(beta);
}
for(i=1;i<=n;i++)
{tata[i]=0;
lg[i]=-1;
}
bfs();
for(i=1;i<=n;i++)
fout<<lg[i]<<" ";
fin.close();
fout.close();
return 0;
}