Pagini recente » Cod sursa (job #1396146) | Cod sursa (job #2813556) | Cod sursa (job #1068625) | Cod sursa (job #3260430) | Cod sursa (job #469114)
Cod sursa(job #469114)
#include<fstream>
#include<iostream>
#include<vector>
#include<list>
#include<queue>
#define NMAX 100005
using namespace std;
long n,m,s;
fstream fin,fout;
long vizitat[NMAX];
struct Nod
{
long varf;
Nod(long nvarf)
{
varf=nvarf;
}
};
vector<list<Nod> > G;
vector<long> BFS;
void bfs(long x)
{
queue<long> coada;
coada.push(x);
vizitat[x]=0;
BFS.push_back(x);
while(coada.size()!=0)
{
x=coada.front();
coada.pop();
list<Nod>::iterator itr;
if(G[x].size()!=0)
{
for(itr=G[x].begin(); itr != G[x].end(); itr++)
{
if(vizitat[(*itr).varf]==-1)
{
BFS.push_back((*itr).varf);
coada.push((*itr).varf);
vizitat[(*itr).varf]=vizitat[x]+1;
}
}
}
}
//vector<long>::iterator itrV;
//for(itrV=BFS.begin(); itrV!=BFS.end(); itrV++)
// fout<<*itrV<<" ";
}
int main()
{
long i,x,y;
fin.open("bfs.in",ios::in);
fout.open("bfs.out",ios::out);
list<Nod> lista;
fin>>n>>m>>s;
for(i=0;i<=n;i++)
{
G.push_back(lista);
vizitat[i]=-1;
}
for(i=0;i<m;i++)
{
fin>>x>>y;
G[x].push_back(Nod(y));
}
bfs(s);
for(i=1;i<=n;i++)
fout<<vizitat[i]<<" ";
fout<<endl;
fin.close();
fout.close();
return 0;
}