Pagini recente » Cod sursa (job #1243264) | Cod sursa (job #2299824) | Cod sursa (job #1239148) | Cod sursa (job #1338232) | Cod sursa (job #1857265)
#include<fstream>
#include<vector>
#include<string.h>
#define maxn 100010
using namespace std;
long x,y,i,n,m,s,tr;
long lung[maxn],viz[maxn],nivel[maxn];
vector <long> a[maxn],c;
void bfs(){
int p=0,u=0;
c.push_back(s);
viz[s]=1;
while(p<=u)
{
for(i=0;i<lung[c[p]];i++)
if(viz[a[c[p]][i]]==0)
{
c.push_back(a[c[p]][i]);
u++;
nivel[c[u]] = nivel[c[p]]+1;
viz[i]=1;
}
p++;
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
}
for(i=1;i<=n;i++)
lung[i]=a[i].size();
bfs();
for(i=1;i<=n;i++)
{
if(nivel[i]==0 && i!=s)
g<<-1<<" ";
else
g<<nivel[i]<<" ";
}
return 0;
}