Cod sursa(job #868237)

Utilizator constantinsorinconstantin sorin constantinsorin Data 30 ianuarie 2013 20:34:14
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<fstream>

using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=30000;
float a[5000][5000],d[5000];
int s[5000],t[5000],n,r;

void cit();

int main()
{
    int i,j,poz;
float min;
    cit();
    s[r]=1;
    for(i=1;i<=n;i++)
    {
        d[i]=a[1][i];
        if(i!=1)
            if(d[i]<INF)t[i]=1;
    }
    for(i=1;i<=n-1;i++)
    {
        min=INF;
        for(j=1;j<=n;j++)
            if(s[j]==0)
                if(d[j]<min)
                {
                    min=d[j];
                    poz=j;
                }
                s[poz]=1;
        for(j=1;j<=n;j++)
            if(s[j]==0)
                if(d[j]>d[poz]+a[poz][j])
                {
                    d[j]=d[poz]+a[poz][j];
                    t[j]=poz;
                }
    }
    for(i=1;i<=n;i++)
        if(i!=1)g<<d[i]<<' ';
    g<<'\n';
    g.close();
    return 0;
}

void cit()
{
    f>>n>>r;
    int i,j,k;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(i!=j)a[i][j]=INF;
    while(f>>i>>j>>k)
        a[i][j]=k;

}