Cod sursa(job #917598)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 18 martie 2013 10:05:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
#include<vector>
#include<queue>
#include<bitset>
#define MAX_SIZE 100005
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");
using namespace std;
int n,m,s;
int a[MAX_SIZE],b[MAX_SIZE],dist[MAX_SIZE];
vector <int> gr[MAX_SIZE];
bool used[MAX_SIZE];
void bfs( void )
{
int k=1;
used[s]=true;
for(int i=1; i<=k ;++i)
{
for(int ii(0); ii<gr[a[i]].size();ii++)
{
int node=gr[a[i]][ii];
if(!used[node])
{
used[node]=true;
dist[node]=dist[a[i]]+1;
a[++k]=node;
}
}
}
}
void write( void )
{
for(int i(1); i<= n; i++)
{
if(dist[i] == 0 && i!=s)
fprintf(g,"-1 ");
else
fprintf(g,"%d ",dist[i]);
}
fclose(g);
}
int main( void )
{
fscanf(f,"%d%d%d",&n,&m,&s);
a[1]=s;
for(int i(1); i<= m ; ++i)
{
int x,y;
fscanf(f,"%d%d",&x,&y);
gr[x].push_back(y);
}
fclose(f);
bfs();
write();
return 0;
}