Cod sursa(job #672155)

Utilizator Daniel30daniel Daniel30 Data 1 februarie 2012 17:57:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define Lmax 100001
#define F(i,exp) for(register int i=0;(exp);++i)
#define FU(i,exp) for(unsigned int i=0;(exp);++i)
int n,m,r,x,y;
vector<int > a[Lmax],t(Lmax,-1);

void cit()
{freopen("bfs.in","rt",stdin);
 freopen("bfs.out","wt",stdout);
 scanf("%d%d%d",&n,&m,&r);
 F(i,i<m) scanf("%d%d",&x,&y),a[x].push_back(y);
}
void bfs()
{queue<int> q;
 q.push(r);t[r]=0;
 while(!q.empty())
	 {x=q.front();q.pop();
	  FU(i,i<a[x].size())
		if(t[a[x][i]]==-1) {t[a[x][i]]=t[x]+1;q.push(a[x][i]);}
		   
		  
	 }
}

int main()
{cit();
 bfs();
 F(i,i<n) printf("%d ",t[i+1]); printf("\n");
 return 0;
}