Cod sursa(job #641519)

Utilizator SimeneSimene Robert Simene Data 28 noiembrie 2011 18:19:36
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#include<vector>
using namespace std;
int viz[100005],n,m,x,y,cont=1,c[100001];
double long k,cost[100001];
vector <int> A[100001];
void citire_graf()
{
FILE *f;
f=fopen("bfs.in","r");
int x,y,i;
fscanf(f,"%d %d %d ",&n ,&m, &k);
int l;
for(l=1;l<=m;l++)
{
fscanf(f,"%d %d ",&x ,&y);
A[x].push_back(y);
}
}
void bfs(int k)
{
int li,ls,i,nr_vecini,nod;
li=1;
ls=1;
c[li]=k;
viz[k]=1;
    while (li<=ls){
        nod=c[li];
        nr_vecini=A[nod].size();
for(i=0;i<nr_vecini;i++)
    if (viz[A[nod][i]]==0)
        {ls++;
        c[ls]=A[nod][i];
        viz[A[nod][i]]=1;
        cost[A[nod][i]]=cost[nod]+1;
}
li++;
}
}
int main()
{
int i;
FILE *g;
citire_graf();
bfs(k);
g=fopen("bfs.out","w");
for(i=1;i<=n;i++)
    if (cost[i]!=0||i==k) fprintf(g,"%d \n",cost[i]);
        else fprintf(g,"%d \n" ,-1);
return 0;
}