Pagini recente » Cod sursa (job #892680) | Cod sursa (job #767276) | Cod sursa (job #3173739) | Cod sursa (job #2929219) | Cod sursa (job #1391294)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("d.in");
ofstream g("d.out");
int a[100][100],d[100],s[100],t[100];
int main()
{
int n,i,min1,j,r;
f>>n>>r;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
for(i=1;i<=n;i++)
{
d[i]=a[r][i];
if(d[i]!=30001&&d[i]!=0)
t[i]=r;
}
s[r]=1;
int y,ok=0;
for(j=1;j<=n-1;j++)
{
min1=30001;
for(i=1;i<=n;i++)
if(min1>d[i]&&d[i]!=0&&s[i]==0)
{min1=d[i]; y=i;}
s[y]=1;
for(i=1;i<=n;i++)
if(s[i]==0&&d[y]+a[y][i]<d[i])
{
d[i]=d[y]+a[y][i];
t[i]=y;
}
ok=1;
for(i=1;i<=n;i++)
if(s[i]==0)
ok=0;
}
for(i=1;i<=n;i++)
if(i!=r)
{ g<<d[i]<<'\n';
j=t[i];
while(j!=0)
{
g<<j<<" ";
j=t[j];
}
g<<'\n'; }
return 0;
}