Cod sursa(job #298740)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 6 aprilie 2009 12:47:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream.h>
ifstream in("bfs.in");
ofstream out("bfs.out");
#define NMAX 100002
int x,y,n,i,m,s;
int dist[NMAX];  
int* a[NMAX];
int viz[NMAX],c[NMAX],d[NMAX],p,u;
int main(void)
{
in>>n>>m>>s;
// d=new int[n+1];  
 for(i=1;i<=n;i++)  
     d[i]=0;
 for(i=1;i<=n;i++)
	dist[i]=-1;
 for(i=1;i<=m;i++)  
     {  
     in>>x>>y;  
     d[x]++;  
     }  
 in.close();  
 for(i=1;i<=n;i++)  
     {  
     dist[i]=-1;
     a[i]=new int[d[i]+1];  
     a[i][0]=d[i];  
     }  
 ifstream inn("bfs.in");
 inn>>n>>m>>s;  
 for(i=1;i<=m;i++)  
     {  
     inn>>x>>y;  
     a[x][a[x][0]]=y;  
     a[x][0]--;  
     }  
 inn.close();
 p=1;
 u=1;
 c[1]=s;
 dist[c[1]]=0;
 viz[c[1]]=1;  
 while(p<=u)
            {
            for(i=1;i<=d[c[p]];i++)
                if(viz[a[c[p]][i]]==0)
                    {
                    u++;
                    c[u]=a[c[p]][i];
                    dist[c[u]]=dist[c[p]]+1;
                    viz[c[u]]=1;
                    }     
            p++;
            }
for(i=1;i<=n;i++)
    out<<dist[i]<<" ";
out<<"\n";
return 0;
}