so I'm having trouble solving a problem for my IT exam.

I solved it and it partially worked but I could find a solution only using a BFS and I'm sure this doesn't require graph traversal algorithms since we haven't done them yet but I can't find any other solution. Could someone give me a hint.I'll post the BFS code down under just to how that I've actually solved this but not how I think it should've been solved.
#include <stdio.h>
#include <stdlib.h>
char file[20][20];
int v[20], ns, n, comp, c[20];
int prim;
int ultim;
FILE *f;
int nr = 0, nl, nc;
void matrix() {
  int i, j;
  char c, n;
  fscanf(f, "%d %d \n", &nl, &nc);
  for (i = 1; i <= nl; i++) {
    for (j = 1; j <= nc; j++) {
      c = getc(f);
      file[i][j] = c;
    }
    n = getc(f);
  }
}
// citirea grafului din fisier text si construirea matricei de adiacenta
// afisarea pe ecran a matricei de adiacenta
void afisare() {
  int i, j;
  printf("Matricea  : \n");
  for (i = 1; i <= nl; i++)
  {
    for (j = 1; j <= nc; j++)
      printf("%c", file[i][j]);
    printf("\n");
  }
}
// returnează primului nod nevizitat
int exista_nod_nevizitat(int v[20], int n) {
  int i, j;
  for (i = 1; i <= nl; i++)
    if (v[i] == 0)
      return i; // primul nod nevizitat
  return 0; // nu mai exista noduri nevizitate
}
// parcurgerea în latime a unei componente conexe, plecând din nodul de start ns
void parcurgere_latime(char file[20][20], int nl, int ns) {
  int i, j;
  comp++;
  v[ns] = 1;
  prim = ultim = 1;
  c[ultim] = ns;
  while (prim <= ultim) {
    for (i = 1; i <= nl; i++)
      if (file[c[prim]][i] == 'L')
        if (v[i] == 0)
        {
          ultim++;
          c[ultim] = i;
          v[i] = 1;
        }
    prim++;
  }
}
// functia principala main()
int main() {
  int set, nr;
  f = fopen("in1.txt", "r");
  fscanf(f, "%d \n", &set);
  while (set != 0) {
    matrix();
    afisare();
    while (exista_nod_nevizitat(v, n) != 0) {
      ns = exista_nod_nevizitat(v, n);
      parcurgere_latime(file, n, ns); // parcurg o alta componenta conexa
    }
    printf("Graful este alcătuit din ");
    printf("%d", comp);
    printf("componente conexe \n");
    set--;
  }
  return 0;
}
 
     
    