Cod sursa(job #1391294)

Utilizator Daria09Florea Daria Daria09 Data 17 martie 2015 19:53:27
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#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;
}