You are on page 1of 10

ACADEMIA DE STUDII ECONOMICE DIN MOLDOVA

Facultatea Tehnologii Informaționale și Statistică Economică

Laboratorul 1
La disciplina Algoritmica grafurilor

Student:
Tacic Vasile
Grupa: TI-181

Chişinău 2020
Item 1

Matricea de adiacenta a grafului Neorientat

C++ Script
#include <iostream>

#include <fstream>

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

#define NMax 101

int n, A[NMax][NMax];

int main(int argc, char** argv) {

int n, m, x,y;

ifstream f("graf.in");

ofstream g("matricea.out");

f>>n>>m;

while (m--)

f>>x>>y;

A[x][y]=A[y][x]=1;

int i=1;

while(i<=n)

{ int j=1;

while(j<=n){

g<<A[i][j]<<" ";

//cout<<A[i][j];
j++;

g<<endl;

i++;

g.close();

f.close();

Fisierul Graf.in

88

12

23

34

45

56

67

78

Fisierul Matrice.out

01000000

10100000

01010000

00101000

00010100

00001010

00000101

00000010
Item 2

Graf Orientat si Matricea de adiacenta

C++ Script

#include <iostream>

#include <fstream>

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

#define NMax 101

int n, A[NMax][NMax];

int main(int argc, char** argv) {

int n, m, x,y;

ifstream f("graf.in");

ofstream g("matricea.out");

f>>n>>m;

while (m--)

f>>x>>y;

A[x][y]=1;

int i=1;

while(i<=n)

{ int j=1;

while(j<=n){

g<<A[i][j]<<" ";

//cout<<A[i][j];
j++;

g<<endl;

i++;

g.close();

f.close();

Graf.in
8

12

23

34

45

56

67

78

81

Matrice.out

01000000

00100000

00010000

00001000

00000100

00000010

00000001

10000000
Item 3

3.Citirea unui graf neorientat si reprezentarea sa prin lista de adiacență

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

using namespace std;

#define NMax 101

int n;

int * A[NMax];

void citire();

void afisare();

int main(int argc, char** argv) {

citire();

afisare();

return 0;

void citire() {

FILE * fin=fopen("graf.in", "r");

int x, y, m, i;

fscanf(fin, "%d %d", &n, &m);

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

{A[i]=(int *)realloc(A[i], sizeof(int));

A[i][0]=0;}

for (i=0; i<m; i++)

{fscanf(fin, "%d %d", &x, &y);

A[x][0]++;

A[x]=(int *)realloc(A[x], (A[x][0]+1)*sizeof(int));

A[x][A[x][0]]=y;

A[y][0]++;
A[y]=(int *)realloc(A[y], (A[y][0]+1)*sizeof(int));

A[y][A[y][0]]=x;

void afisare() {

int i, j;

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

{printf("Lista de adiacenta a varfului %d: ", i);

for (j=1; j<=A[i][0]; j++) printf("%d ", A[i][j]);

printf("\n");

Date de intrare

Graf.in
8

12

23

34

45

56

67

78

81
Date de iesire

Item 4

Citirea unui graf orientat și reprezentarea sa prin lista de adiacență

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

using namespace std;

#define NMax 101

int n;

int * A[NMax];

void citire();

void afisare();

int main(int argc, char** argv) {

citire();

afisare();

return 0;

void citire() {

FILE * fin=fopen("graf.in", "r");

int x, y, m, i;

fscanf(fin, "%d %d", &n, &m);

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


{A[i]=(int *)realloc(A[i], sizeof(int));

A[i][0]=0;}

for (i=0; i<m; i++)

{fscanf(fin, "%d %d", &x, &y);

A[x][0]++;

A[x]=(int *)realloc(A[x], (A[x][0]+1)*sizeof(int));

A[x][A[x][0]]=y;

void afisare() {

int i, j;

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

{printf("Lista de adiacenta a varfului %d: ", i);

for (j=1; j<=A[i][0]; j++) printf("%d ", A[i][j]);

printf("\n");

Date de intrare

Graf.in
8

12

23

34

45

56

67

78

81
Date de iesrire

You might also like