Pagini recente » Cod sursa (job #60819) | Borderou de evaluare (job #1702011) | Cod sursa (job #2042454) | Cod sursa (job #752082) | Cod sursa (job #590287)
Cod sursa(job #590287)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
struct s_node
{
vector <int> ad;
int d;
bool v;
};
int n,m,s;
s_node node[100001];
queue <int> q;
int main()
{
ifstream in("bfs.in");
ofstream out("bfs.out");
int i1,x,y;
vector <int>::iterator it1;
in>>n>>m>>s;
for(i1=0;i1<m;i1++)
{
in>>x>>y;
node[x].ad.push_back(y);
}
q.push(s);
node[s].v =true;
while(!q.empty())
{
for(it1 = node[q.front()].ad.begin(); it1 != node[q.front()].ad.end(); it1++)
if(!node[*it1].v)
{
node[*it1].v = true;
node[*it1].d = node[q.front()].d + 1;
q.push(*it1);
}
q.pop();
}
for(i1=1;i1<n+1;i1++)
if(!node[i1].d)
{
if(i1 != s)
out<<"-1 ";
else
out<<"0 ";
}
else
out<<node[i1].d<<' ';
in.close();
out.close();
return 0;
}