Pagini recente » Cod sursa (job #1391469) | Cod sursa (job #2937565) | Cod sursa (job #1054195) | Cod sursa (job #1510292) | Cod sursa (job #560734)
Cod sursa(job #560734)
#include<stdio.h>
#include<queue.h>
#include<algorithm>
#define dim 101000
using namespace std;
int n,m,nod2,x,y;
int dist[dim];
struct nod
{
int el;
nod *next;
}*liste[dim];
queue <int > q;
inline void add(int x , int y )
{
nod *p=new nod ;
p->el = y;
p->next = liste[x];
liste[x] = p;
}
void read ()
{
scanf("%d %d %d",&n,&m,&nod2);
for(int i=1 ; i<=m;i++)
{
scanf("%d %d",&x,&y);
if ( y != nod2 )
add(x,y);
}
}
inline void afis ()
{
for(int i=1 ; i<=n; i++)
{
if ( dist [i] == 0 && i!=nod2 )
{
printf("-1 ");
}
else
printf("%d ",dist[i] ) ;
}
}
void solve ()
{
read();
nod *p;
for(q.push(nod2); !q.empty() ; q.pop())
{
x = q.front ();
p= liste[x];
while ( p )
{
y = p->el;
if ( dist[y]==0 || dist[y]>dist[x]+1)
{
q.push(y);
dist[y] = dist[x]+1;
}
p=p->next ;
}
}
afis () ;
}
int main ()
{
freopen("bfs.out","w",stdout);
freopen("bfs.in","r",stdin);
solve();
return 0;
}