Pagini recente » Cod sursa (job #1117343) | Cod sursa (job #412609) | Cod sursa (job #598861) | Cod sursa (job #3259070) | Cod sursa (job #1466808)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
#define fin "bfs.in"
#define fou "bfs.out"
#define Max 100010
#define inf 1000000000
using namespace std;
ifstream t1(fin);
ofstream t2(fou);
int cost[Max],n,m,s,viz[Max];
vector<int> rel[Max];
queue<int> c;
int main()
{
t1>>n>>m>>s;
int i,j,nod,nod2;
for(i=1;i<=m;i++)
{
t1>>nod>>nod2;
rel[nod].push_back(nod2);
}
for(i=1;i<=n;i++) { cost[i]=inf; viz[i]=0; }
cost[s]=0; viz[s]=1;
c.push(s);
while(!c.empty())
{
nod=c.front();
c.pop();
for(i=0;i<rel[nod].size();i++)
if(viz[rel[nod][i]]==0)
{
c.push(rel[nod][i]);
cost[rel[nod][i]]=cost[nod]+1;
viz[rel[nod][i]]=1;
}
}
for(i=1;i<=n;i++)
if(cost[i]!=inf) t2<<cost[i]<<' ';
else t2<<"-1 ";
t1.close();
t2.close();
}