Cod sursa(job #916328)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 16 martie 2013 12:47:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<deque>
#include<bitset>
using namespace std;
struct as
{
    int y,z;
};
struct sp
{
    int p;
    vector<int>a;
}v[100005];
int v2[100005];
bitset<100005> t;
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
int n,m,s,i,j,x,y,val,nr;
bool t2;
as st,dr;
deque <as> de;
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
v[x].p++;
 v[x].a.push_back(y);
}
st.y=s;
t[s]=1;
v2[s]=0;
st.z=0;
de.push_back(st);
while(!de.empty())
{
    st=de.front();
    val=st.z;
de.pop_front();
for(i=0;i<v[st.y].p;i++)
if(t[v[st.y].a[i]]==0)
{
    t[v[st.y].a[i]]=1;
    dr.y=v[st.y].a[i];
    dr.z=val+1;
    v2[v[st.y].a[i]]=dr.z;
    de.push_back(dr);
}
}
for(i=1;i<=n;i++)
if(t[i])
printf("%d ",v2[i]);
else
printf("-1 ");
    return 0;
}