Cod sursa(job #550487)

Utilizator IAmASuperCerealVictor Andrei IAmASuperCereal Data 9 martie 2011 17:20:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 8.14 kb
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////[#\:xx        xx:\#[//////////////////////////////////////////////////
//////////////////////////////////////////[\x^@HpN77777777777777777777NpH&^x\[//////////////////////////////////////////
/////////////////////////////////////[x^dp77777777777777777777777777777777777Np@ :[/////////////////////////////////////
/////////////////////////////////[x&p77777777777777777777777777777777777777777777773_x[/////////////////////////////////
//////////////////////////////#^3777777777777777777777777777777777777777777777777777777H #//////////////////////////////
///////////////////////////#^p7777777777777777777777777777777777777777777777777777777777773 #///////////////////////////
////////////////////////[ H777777777777777777777777777777777777777777777777777777777777777777Hx[////////////////////////
//////////////////////#^W7777777777777777777777777777777777777777777777777777777777777777777777W^[//////////////////////
////////////////////#&N77777777777777777777777777777777777777777777777777777777777777777777777777N_[////////////////////
//////////////////[_N777777777777777777777777777777777777777777777777777777777777777777777777777777N^[//////////////////
///////////////// W7777777777777777777777777777777777777777777777777777777777777777777777777777777777Wx/////////////////
///////////////#H77777W3Hddd3W77777777777777777777777777777777777777777777NpHdddd3W77777777777777777777d#///////////////
////////////// N773_x[////////[\ dN777777777777777777777777777777777773_x#/////////[\ @W7777777777777777Nx//////////////
////////////[&77H\///# @pWNWH_:///[ 3777777777777777777777777777777p #///# &3WNNpH_x////:&N777777777777777_/////////////
///////////[H7N ///_zMMMMMMMP@#//////xp77777777777777777777777777px///:3zMMMMMMMMME [/////[_777777777777777d[///////////
//////////[37W\//\EMMMMMMMMQ#/////////[@777777777777777777777777&[//xEMMMMMMMMMMMp//////////\377777777777777H[//////////
/////////[37N\//xPMMMMMMMMM_////////////_7777777777777777777777x//[WMMMMMMMMMMMMM[///////////[d77777777777777H[/////////
/////////H77x//\PMMMMMMMMMM3/////////////@77777777777777777777 //#zMMMMMMMMMMMMMMx////////////[H77777777777777@/////////
////////_773///9MMMMMMMMMMMM@[///////[x//[W777777777777777777@///EMMMMMMMMMMMMMMMDx////////\ //#N77777777777777 ////////
///////:777 //xMMMMMMMMMMMMMMD3^x:x^pPL#//^777777777777777777#//_MMMMMMMMMMMMMMMMMMJd ::x&7LL[//_777777777777777#///////
///////p777#//dMMMMMMMMMMMMMMMMMMMMMMMM_//\77777777777777777p///JMMMMMMMMMMMMMMMMMMMMMMMMMMMM_//:777777777777777H///////
////// 7777[//3MMMMMMMMMMMMMMMMMMMMMMMM3//#77777777777777777d///PMMMMMMMMMMMMMMMMMMMMMMMMMMMM3//[7777777777777777x//////
//////37777\//@MMMMMMMMMMMMMMMMMMMMMMMMd//#77777777777777777H///DMMMMMMMMMMMMMMMMMMMMMMMMMMMMd//#7777777777777777H//////
/////\77777 //\MMMMMMMMMMMMMMMMMMMMMMMMx//x77777777777777777N[//WMMMMMMMMMMMMMMMMMMMMMMMMMMMMx//x77777777777777777#/////
/////^77777p///^&&&&&&&&&&&&&&&&&&&&&&&///d777777777777777777 //\&&&&&&&&&&&&&&&&&&&&&&&&&&&_///H77777777777777777 /////
/////d777777 ////////////////////////////x7777777777777777777W[//////////////////////////////// 777777777777777777&/////
/////p7777777WWWWWWWWWWWWWWWWWWWWWWWWWWWWN77777777777777777777NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW7777777777777777777H/////
/////W7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777773/////
/////W7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777773/////
/////p777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777H/////
/////d777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777&/////
///// 777777773[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[#W7777777777777777777x/////
/////#77777777pxxxx///[####################################################################[//x7777777777777777777[/////
//////377777777777N///x                                                                    x///H77777777777777777d//////
//////x777777777777#//\                                                                     #//x77777777777777777://////
///////377777777777_//[                                                                     ://[7777777777777777H///////
///////\77777777777N#//\                                                                    x///N77777777777777N#///////
////////^77777777777d///x                                                                   x///777777777777777 ////////
/////////d77777777777 //[                                                                   \//#77777777777777@/////////
/////////[377777777777x//[                                                                  [//^7777777777777d[/////////
//////////[37777777777Nx//[                                                                \//[W777777777777H[//////////
///////////[H7777777777Nx//[x                                  ^^___^^                    :///d777777777777@[///////////
/////////////_77777777777 ///x                           ^dp7EzDDDDDDDzJ7pd^             :///@777777777777^/////////////
//////////////xN7777777777&[//\                       _3EDDDDDDDDDDDDDDDDDDDEp&         #//[d77777777777Wx//////////////
///////////////#d77777777773#//[x                   @7DDDDDDDDDDDDDDDDDDDDDDDDD9d     :[//\p77777777777@[///////////////
/////////////////xW777777777N^[//#x               _7DDDDDDDDDDDDDDDDDDDDDDDDDDDDD9& x[//[&77777777777px/////////////////
//////////////////[^N777777777Wx///#x            dzDDDDDDDDDDDDDDDDDDDDDDDDDDDDDz3x[//[^N7777777777W [//////////////////
////////////////////[_N7777777773x///#x         HDDDDDDDDDDDDDDDDDDDDDDDDDDDDzW^#///#&N7777777777N^[////////////////////
//////////////////////[^W777777777p [//[#x     &QDDDDDDDDDDDDDDDDDDDDDDDDQE3 #///[ H77777777777p [//////////////////////
/////////////////////////xd777777777N&:////#\x EDDDDDDDDDDDDDDDDDDDDDJNd #[///# dN77777777777dx/////////////////////////
///////////////////////////# 3777777777N@ #////[x^@3W7EJzzzJE9NpH& :[/////#x_p777777777777H [///////////////////////////
//////////////////////////////# HN777777777NH_x\[//////////////////[#x &HW777777777777Nd #//////////////////////////////
/////////////////////////////////[x_3N77777777777W3d@&^^    ^^_@d3W777777777777777NH^:[/////////////////////////////////
/////////////////////////////////////[: @3N7777777777777777777777777777777777N3& \[/////////////////////////////////////
//////////////////////////////////////////[#x &d3WN777777777777777777NW3d_ x#[//////////////////////////////////////////
//////////////////////////////////////////////////[[#\:xx      xx:\#[[//////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <vector>
//copyright 2011
#define NMAX 100002
#define input "bfs.in"
#define output "bfs.out" 

using namespace std;

vector <int> g[NMAX];

int x,y,n,m,s,nc,tail[NMAX],step_dance[NMAX];
bool been_there_done_that[NMAX];

void open()
{
	freopen(input,"r",stdin);
    freopen(output,"w",stdout);
}

void read()
{
	scanf("%d %d %d", &n, &m, &s);
	for(int i=1;i<=n;++i) step_dance[i]=-1;
    for(int i=1;i<=m;++i)
    {
        scanf("%d %d", &x, &y);
        g[x].push_back(y);
    }
}

void bfs(int nod)
{
	int p=1,u=1,knot,x;
	step_dance[nod]=0;
	been_there_done_that[nod]=true;
	tail[p]=nod;
	while(p<=u)
	{
		x=tail[p++];
		for(int i=0;i<g[x].size();i++)
		{
			knot=g[x][i];
			if(!been_there_done_that[knot])
			{
				tail[++u]=knot;
				been_there_done_that[knot]=true;
				step_dance[knot]=step_dance[x]+1;
			}
		}
	}
}

void a_fish()
{
	for(int i=1;i<=n;++i) 
		printf("%d ",step_dance[i]);
}

void _where_the_magic_happens()
{
	bfs(s);
	a_fish();
}
int main ()
{
	open();
    read();
	_where_the_magic_happens();
    return 0;
}