Pagini recente » Cod sursa (job #717237) | Cod sursa (job #1939362) | Cod sursa (job #2684904) | Cod sursa (job #2806024) | Cod sursa (job #1863434)
#include <iostream>
#include <fstream>
#include <vector>
#include <string.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,start,sf;
vector<int>v[100010];
int G[100010],cd[100010];
int cost[100010];
void bfs(int start)
{int i,j;sf=1;
memset(cost,0,sizeof(cost));
cost[start]=1;
cd[sf]=start;
for(i=1;i<=sf;i++)
for(j=0;j<G[cd[i]];j++)
if(cost[v[cd[i]][j]]==0)
sf++,cd[sf]=v[cd[i]][j],cost[cd[sf]]=cost[cd[i]]+1;
}
int main()
{ f>>n>>m>>start;int i,x,y;
for(i=1;i<=m;i++)
{ f>>x>>y;v[x].push_back(y);}
for(i=1;i<=n;i++)
G[i]=v[i].size();
bfs(start);
for(i=1;i<=n;i++)
g<<cost[i]-1<<" ";
}