Pagini recente » Cod sursa (job #12343) | Cod sursa (job #1429565) | Clasament primuld | Cod sursa (job #2473229) | Cod sursa (job #1791409)
#include <fstream>
#include <queue>
#include <vector>
#define nmax 100010
using namespace std;
vector <unsigned int> a[nmax];
queue <unsigned int> q;
int d[nmax];
bool viz[nmax];
void bfs(unsigned int s)
{
unsigned int x,y,i;
viz[s]=1;q.push(s);
while (!q.empty())
{
x=q.front();q.pop();
for (i=0;i<a[x].size();i++)
{
y=a[x][i];
if (!viz[y])
{
viz[y]=1;
d[y]=d[x]+1;
q.push(y);
}
}
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
unsigned int n,m,s,i,x,y;
f>>n>>m>>s;
for (i=1;i<=m;i++)
{
f>>x>>y;
if (x!=y)
{
a[x].push_back(y);
}
}
bfs(s);
for (i=1;i<=n;i++)
{
if (!d[i])
{
if (i!=s) g<<"-1 ";
else g<<"0 ";
}
else g<<d[i]<<' ';
}
g<<'\n';
f.close();
g.close();
return 0;
}