Pagini recente » Cod sursa (job #2918137) | Cod sursa (job #3262382) | Cod sursa (job #1749060) | Cod sursa (job #2641168) | Cod sursa (job #591931)
Cod sursa(job #591931)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector <long> G[100005];
long Cost[100005];
unsigned long N, Start;
void Read ()
{
ifstream fin ("bfs.in");
unsigned long i, X, Y, M;
fin >> N >> M >> Start;
for (i=0; i<M; i++)
{
fin >> X >> Y;
if (X!=Y)
{
G[X].push_back (Y);
}
}
fin.close ();
}
void Type ()
{
ofstream fout ("bfs.out");
unsigned long i;
for (i=1; i<=N; i++)
{
fout << Cost[i] << "\n";
}
fout.close ();
}
void BFS (long S)
{
unsigned long Coada[100005], i, j, n=1;
for (i=0; i<=N; i++)
{
Cost[i]=-1;
}
Cost[S]=0;
Coada[0]=S;
for (i=0; i<n; i++)
{
for (j=0; j<G[Coada[i]].size (); j++)
{
if (Cost[G[Coada[i]][j]]==-1)
{
Cost[G[Coada[i]][j]]=Cost[Coada[i]]+1;
Coada[n++]=G[Coada[i]][j];
}
}
}
}
int main ()
{
Read ();
BFS (Start);
Type ();
return 0;
}