Pagini recente » Borderou de evaluare (job #3129697) | Cod sursa (job #538728) | Borderou de evaluare (job #649861) | Cod sursa (job #646120)
Cod sursa(job #646120)
#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;
}