Pagini recente » Profil M@2Te4i | Cod sursa (job #893480) | Cod sursa (job #830145) | Cod sursa (job #32898) | Cod sursa (job #766249)
Cod sursa(job #766249)
// muchiile au costul 1
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
int n,m,S,x,y;
vector <int> a[100001];
int dist[100001];
void BFS(int nod)
{
int i;
queue <int> q;
q.push(nod);
int last=nod;
while (!q.empty())
{
nod=q.front();
q.pop();
for (i=0;i<a[nod].size();i++)
{
if ((dist[a[nod][i]]==0 || dist[a[nod][i]]>dist[nod]+1)&& (a[nod][i]!=last))
{
dist[a[nod][i]]=dist[nod]+1;
q.push(a[nod][i]);
}
}
last=nod;
}
}
int main(void)
{
fstream f,g;
f.open("bfs.in",ios::in);
g.open("bfs.out",ios::out);
f>>n>>m>>S;
int i,j;
for (i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
//a[y].push_back(x);
}
BFS(S);
dist[S]=0;
for (i=1;i<=n;i++)
{
if (dist[i]==0 && i!=S)
g<<-1<<" ";
else
g<<dist[i]<<" ";
}
}
// afisare pt vector din STL
/*
for (i=1;i<=n;i++){
for (j=0;j<a[i].size();j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
*/