Sunteți pe pagina 1din 5

#include <iostream>

#include <stdlib.h>

#include <stdio.h>

int MI[100][100],MA[100][100],n,m,k;

struct node{

int v;

node *next;

node(int x,node * t){

v=x;

next=t;

};

typedef node *lnk;

lnk adj[100];

void fMI(){

printf("Matricea Indiacenta\n");

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

printf("Introduceti %d rindul\n",i+1);

for(int j=0;j<n;j++)

scanf("%d",&MI[i][j]);

void fMA(){

printf("Matricea Adiacenta\n");

for(int i=0;i<n;i++){

printf("Introduceti %d rindul\n",i+1);

for(int j=0;j<n;j++)

scanf("%d",&MA[i][j]);
}

void fLA(){

int tmp;

printf("Lista de adiacenta\n");

for(int i=0;i<n;i++){

printf("Introduceti partea superioara legata cu %d\n",i+1);

printf("%d",i+1);

scanf("%d",&tmp);

while(tmp){

adj[i]=new node(tmp-1,adj[i]);

scanf("%d",&tmp);

void fMAvLA(){

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

if(MA[i][j])

adj[i]=new node(j,adj[i]);

void fLAvMI(){

int m=0;

for(int i=0;i<n;i++){

lnk tmp=adj[i];

while(tmp){

MI[m][i]=-1;

MI[m++][tmp->v]=1;
tmp=tmp->next;

void fMIvMA(){

int i,j,k,l;

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

for(j=0;j<n;j++){

if(MI[i][j]==-1) k=j;

if(MI[i][j]==1) l=j;

MA[k][1]=1;

void printAll(){

printf("Matricea incidenta\n");

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

for(int j=0;j<n;j++)

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

printf("\n");

printf("Matricea adiacenta\n");

for(int i=0;i<n;i++){

for(int j=0;j<n;j++)

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

printf("\n");

printf("Lista de adiacenta\n");

for(int i=1;i<=m;i++){
printf("%d: ",i);

lnk tmp=adj[i-1];

while(tmp){

printf("%f",tmp->v+1);

tmp=tmp->next;

printf("0\n");

int main()

printf("Introduceti cantitatea virfurilor:\n");

scanf("%d",&n);

printf("Introduceti cantitatea muchiilor:\n");

scanf("%d",&m);

printf("Alegeti metoda de introducere: \n.Matricea incidenta\n2.Matricea adiacenta\n3.Lista de


adiacenta\n");

scanf("%d",&k);

if(k==1){

fMI();

fMIvMA();

fMAvLA();

if (k==2){

fMA();

fMAvLA();

fLAvMI();

if (k==3){

fLA();
fLAvMI();

fMIvMA();

printAll();

return 0;

S-ar putea să vă placă și