Pagini recente » Cod sursa (job #1740542) | Cod sursa (job #1228112) | Cod sursa (job #2514036) | Cod sursa (job #2942747) | Cod sursa (job #1147963)
/*
Keep It Simple!
*/
#include<cstdio>
#include<list>
#include<queue>
#define MaxN 100001
using namespace std;
int N,viz[MaxN],M,S,x,y;
list<int> G[MaxN];
queue<int> Stack;
void BFS(int Source)
{
viz[Source] = 1;
Stack.push(Source);
while(Stack.size())
{
int aux = Stack.front();
Stack.pop();
for(list<int>::iterator it = G[aux].begin(); it!=G[aux].end(); it++)
{
if(!viz[*it])
{
viz[*it] += 1+viz[aux]-viz[*it];
Stack.push(*it);
}
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
for(int i=1;i<=M;i++)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
BFS(S);
for(int i=1;i<=N;i++)
printf("%d ",viz[i]-1);
}