Pagini recente » Cod sursa (job #2998660) | Cod sursa (job #940758) | Cod sursa (job #3141482) | Cod sursa (job #2515173) | Cod sursa (job #525508)
Cod sursa(job #525508)
#include<fstream.h>
const int max=1000;
ifstream f("roifloid.in");
ofstream g("roifloid.out");
int a[30][30],n,m,i,j,x,y;
void citire()
{f>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(i!=j)a[i][j]=max;
for(int l=1; l<=m; l++)
{f>>i>>j>>a[i][j];
a[j][i]=a[i][j];
}
f>>x>>y;
f.close();
}
void afisare()
{for(int i=1; i<=n; i++)
{for(int j=1; j<=n; j++)
g<<a[i][j]<<" ";
g<<'\n';
}
g<<'\n';
}
void calcul()
{for(int k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(i!=k && j!=k && i!=j)
if(a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
void traseu(int x, int y)
{int gasit=0;
for(int k=1; k<=n && !gasit; k++)
{if(x!=k && y!=k && x!=y)
if(a[x][y]==a[x][k]+a[k][y])
{traseu(x,k);
traseu(k,y);
gasit=1;
}
}
if(gasit==0)g<<y<<" ";
}
int main()
{citire();
afisare();
calcul();
afisare();
if(a[x][y]<max)
{g<<x<<" ";
traseu(x,y);
}
else g<<"nu exista cale de acces";
g.close();
return 0;
}