Pagini recente » Cod sursa (job #389264) | Cod sursa (job #953120) | Cod sursa (job #1417472) | Cod sursa (job #2084704) | Cod sursa (job #1592210)
#include <iostream>
#include <fstream>
#include <queue>
#include <list>
using namespace std;
ifstream in("in");
ofstream out("out");
queue <int> coda;
int n,m,s,seen[100000],d[100000];
struct graph{
list <int> node;
} G[100000];
void construct (){
in>>n>>m>>s;
int a,b;
while(m){
m--;
in>>a>>b;
if(a==b) continue;
G[a].node.push_back(b);
cout<<a<<" -> "<<b<<'\n';
}
}
void BFS(int v){
int x;
d[v]=0;
coda.push(v);
while(!coda.empty()){
x=coda.front();
seen[x]=1;
//
//out<<x<<' ';
coda.pop();
//
while(!G[x].node.empty()){
if(seen[G[x].node.front()]==0){
coda.push(G[x].node.front());
d[G[x].node.front()]=d[x]+1;
}
G[x].node.pop_front();
}
}
}
void dist(){
//out<<'\n';
for(int i=1;i<=n;i++)
if(d[i]==0&&i!=s) d[i]=-1;
for(int i=1;i<=n;i++)
out<<d[i]<<' ';
}
int main()
{
construct();
BFS(s);
dist();
return 0;
}