Pagini recente » Cod sursa (job #1746217) | Cod sursa (job #260007) | Cod sursa (job #2973072) | Cod sursa (job #2345724) | Cod sursa (job #2075906)
#include <bits/stdc++.h>
#define MaxN 100005
#define INF 2140000000
#define MOD 1000000007
using namespace std;
FILE*IN,*OUT;
int d[MaxN],N,M,X,Y,S;
bool IQ[MaxN];
vector<int>Graph[MaxN];
void BFS(int node)
{
queue<int>Q;
Q.push(node);
for(int i=1;i<=N;i++)
d[i]=INF;
d[node]=0;
while(!Q.empty())
{
node=Q.front();
Q.pop();
for(int i=0;i<Graph[node].size();i++)
if(d[Graph[node][i]]>d[node]+1)
{
d[Graph[node][i]]=d[node]+1;
if(!IQ[Graph[node][i]])
IQ[Graph[node][i]]=1,Q.push(Graph[node][i]);
}
}
}
int main()
{
IN=fopen("bfs.in","r");
OUT=fopen("bfs.out","w");
fscanf(IN,"%d%d%d",&N,&M,&S);
for(int i=1;i<=M;i++)
{
fscanf(IN,"%d%d",&X,&Y);
Graph[X].push_back(Y);
}
BFS(S);
for(int i=1;i<=N;i++)
{
if(d[i]==INF)
fprintf(OUT,"-1 ");
else fprintf(OUT,"%d ",d[i]);
}
return 0;
}