mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
//Algoritmul Roy-Warshall
#include<conio.h> #include<stdio.h>
int a[20][20],k,n,i,j,dr[20][20];
void roywar(int i, int j) { if (a[i][j]==1) dr[i][j]=1; else {for(k=1;k<=n;k++) for (i=1;i<=n;i++) for (j=1;j<=n;j++) if (dr[i][j]==0) dr[i][j]= (dr[i][k])&&(dr[k][j]); } }
void main(void) { clrscr(); printf("dati n:" );scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) { printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]); a[i][i]=0; } printf("\nschema grafului este:" ); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf("n" ); } printf("Matricea drumurilor este:n" ); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) {roywar(i,j); printf("%4d",dr[i][j]); } } for (i=1;i<=n;i++) for (j=1;j<=n;j++) { roywar(i,j); if (dr[i][j]==1) printf("nExista drum intre nodul %d si nodul %dn",i,j); else printf("nNu exista drum intre nodul %d si nodul %dn",i,j); } getch(); }
|
|