25. Se da un graf prin urmatoarele informatii: n m - Nr. de noduri si nr. de arce i1 j1 Ä¿ i2 j2 ³ i3 j3 ³ . ³ Arcele . ³ . ³ im jm ÄÙ a) Sa se construiasca reprezentarea prin liste de adiacenta directa a grafului dat. b) Se citesc doua noduri i si j. Consultind reprezentarea construita, sa se se determine daca exista un arc de la i la j. c) Se citeste un nod k. Sa se afiseze toti succesorii nodului k. d) Sa se determine gradul maxim de iesire al nodurilor din graf. (Gradul de iesire al unui nod reprezinta numarul de arce care pleaca din el). EXEMPLU DE RULARE: Introduceti numarul de noduri n: 7 Introduceti numarul de arce m: 10 Introduceti arcele: 1 2 1 3 2 4 2 5 3 5 5 1 5 6 5 7 6 7 7 5 Introduceti doua noduri: 3 5 Exista arc de la 3 la 5! Introduceti nodul pentru afisarea listei de succesori: 5 Lista de succesori a nodului 5: 1 6 7 Gradul maxim de iesire: 3 ===================================================== struct Element{ int data; Element *link; }; typedef struct Element* Lista; Lista tab[50]; int n; void insert(Lista &c,int nr) { Lista p,q; p=new Element; p->data=nr; if(c==0 || c->datalink=c; c=p; } else { q=c; while(q->link !=0 && q->datalink; p->link=q->link; q->link=p; } } void creare() { int m,i,a,b; printf("\n introduceti nr de noduri :"); scanf("%d",&n); printf("\n introduceti nr de arce :"); scanf("%d",&m); printf("\n introduceti arcele :\n"); for(i=1;i<=m;i++) { scanf("%d%d",&a,&b); insert(tab[a],b); } } void arc() { int a,b; Lista p; printf("\n introduceti doua noduri :"); scanf("%d%d",&a,&b); if((p=tab[a])!=0) { while(p!=0 && p->data!=b) p=p->link; if(p!=0) { printf("\n exista arc de la %d la %d ",a,b); return; } } printf("\n nu exista arc de la %d la %d",a,b); } void succesori(int a) { Lista p; if((p=tab[a])==0) printf("\n nodul %d nu are succesori ",a); else { printf("\n succesorii nodului %d sint :",a); while(p!=0) { printf(" %d",p->data); p=p->link; } } } int gradi() { int grl,grf,i; Lista p; grl=grf=0; for(i=1;i<=n;i++) { if((p=tab[i])!=0) while(p!=0) { grl++; p=p->link; } if(grl>grf) grf=grl; grl=0; } return grf; } #include #include #include"graf.cpp" void main(void) { int i; clrscr(); creare(); arc(); printf("\n dati un nod :"); scanf("%d",&i); succesori(i); i=gradi(); printf("\n gradul maxim de iesire este: %d",i); getch(); }