Cod sursa(job #646120)

Utilizator FIIPopaPopa Valentin-Alexandru FIIPopa Data 10 decembrie 2011 22:03:11
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.17 kb
#include <stdio.h>
#include <stdlib.h>

int a[10][10],tail[20],visited[10];
int n,m,first,last,top;

void BFS() // parcurgerea in latime
{int k;
while(first<=last)
   {top=tail[first];
   for(k=1;k<=n;k++)
    if(a[top][k]==1&&visited[k]==0)
      {last++;
      tail[last]=k;
      visited[k]=1;
      }
   first++;
  }
}


int main(int argc, char *argv[])
{int x,y;
FILE *fin;
fin=fopen("edges.txt", "r");
fscanf(fin,"%d %d", &n,&m);
int i=1;
for(i=1;i<=m;i++)
 {fscanf(fin,"%d %d", &x,&y);
  a[x][y]=1;
 }

int j; 
printf("Matricea de adiacenta a grafului:\n\n");
for(i=1;i<=n;i++)
 {for(j=1;j<=n;j++)
    printf("%d ", a[i][j]);
  printf("\n");
 }

printf("\n");
int node; // varful de la care se porneste parcurgerea
first=last=1;
printf("Introduceti nodul de inceput: ");
scanf("%d",&node);
while(node>n)
 {printf("Eroare! Introduceti din nou nodul de inceput: ");
  scanf("%d",&node);
  }
visited[node]=1;
tail[first]=node;
BFS();

printf("Parcurgerea in latime incepand cu nodul %d este: ", node);
for(i=1;i<=last;i++) //afisarea cozii
  printf("%d ",tail[i]);
  
fclose(fin);
printf("\n");
  system("PAUSE");	
  return 0;
}