Sunteți pe pagina 1din 2

Matei Maria-Mihaela

INFO2

Plecand de la notiunile din curs, creati un program c/c++ care construieste un subgraf, dintr-un graf
dat. In cadrul programelor de laborator atasate cursului, sunt date o serie de solutii la teme. Fiecare
student este rugat sa implementeze propria versiune.

//subgraf dintr-un graf

# include <stdio.h>

# include <conio.h>

void main(void) {

int n, a[50][50], i, j, m, v[50], k;

FILE * f;

f = fopen("graf.in", "r");

fscanf(f, "%d", &n);

for (i = 1; i <= n; i++)

for (j = 1; j <= n; j++)

fscanf(f, "%d", &a[i][j]);

fclose(f);

printf("\n graful citit are %d noduri!", n);

printf("\n matricea sa de adiacenta este:\n");

for (i = 1; i <= n; i++) {

for (j = 1; j <= n; j++)

printf("%d ", a[i][j]);

printf("\n");

printf("\n cate varfuri doriti sa eliminati?");

scanf("%d", &m);
printf("introduceti cele %d varfuri:", m);

for (i = 1; i <= m; i++) scanf("%d", &v[i]);

for (k = 1; k <= m; k++) {

for (i = v[k] - k + 1; i < n; i++)

for (j = 1; j <= n; j++)

a[i][j] = a[i + 1][j];

for (i = 1; i <= n; i++)

for (j = v[k] - k + 1; j < n; j++)

a[i][j] = a[i][j + 1];

n = n - 1;

printf("subgraful rezultat are %d varfuri,matricea sa fiind:\n", n);

for (i = 1; i <= n; i++) {

for (j = 1; j <= n; j++)

printf("%d ", a[i][j]);

printf("\n");

getch();