Pagini recente » Cod sursa (job #180734) | Cod sursa (job #633143) | Lot 2017 Baraj 1 Clasament | Cod sursa (job #992020) | Cod sursa (job #676736)
Cod sursa(job #676736)
#include<stdio.h>
#include<queue>
#include<vector>
#include<bitset>
#define Nmax 100001
#define Max 0x3f3f3f3f
using namespace std;
vector<int> G[Nmax];
int N,M,S,d[Nmax];
bitset<Nmax> viz;
void read()
{
FILE*f = fopen("bfs.in","r");
fscanf(f,"%d%d%d",&N,&M,&S);
int i,x,y;
for(i=1;i<=M;++i)
{
fscanf(f,"%d%d",&x,&y);
G[x].push_back(y);
}
fclose(f);
}
void bfs()
{
fill(d+1,d+N+1,Max);
queue<int> Q;
Q.push(S);
viz[S] = true;
d[S] = 0;
vector<int>::iterator it;
int nod;
while(!Q.empty())
{
nod = Q.front();
Q.pop();
for(it = G[nod].begin();it<G[nod].end();++it)
if(viz[*it]==false)
{
viz[*it] = true;
d[*it] = d[nod]+1;
Q.push(*it);
}
}
}
int main()
{
read();
bfs();
FILE*g = fopen("bfs.out","w");
int i;
for(i=1;i<=N;++i)
{
if(d[i]==Max)
d[i] = -1;
fprintf(g,"%d ",d[i]);
}
fclose(g);
return 0;
}