Cod sursa(job #1585807)

Utilizator denisapirvuPirvu Denisa denisapirvu Data 31 ianuarie 2016 15:05:29
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int d[10000],t[10000],n,m,Min;
int c[10000][10000];
int r,s[10000];
void citire()
{
    int i,j,k,cost;
    f>>n>>m;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            if(i!=j)
                c[i][j]=10000;
    for(k=1; k<=m; k++)
    {
        f>>i>>j>>cost;
        c[i][j]=cost;
    }
}
void dijkstra(int r)
{
    s[r]=1;
    int i;
    for(i=2; i<=n; i++)
        {
            d[i]=c[1][i];
            t[i]=r;
        }
   // d[r]=0;
   // t[r]=0;
    int k,j;
    for(k=1; k<=n; k++)
    {
        Min=10000;
        for(j=1; j<=n; j++)
            if(Min>d[j] && s[j]==0)
            {
                i=j;
                Min=d[j];
            }
        s[i]=1;
        for(j=1; j<=n; j++)
            if(d[j]>d[i]+c[i][j])
            {
                d[j]=d[i]+c[i][j];
                t[j]=i;
            }
    }
}
void afislant(int i)
{
    if(t[i]>0)
        afislant(t[i]);
    g<<i<<" ";
}
int main()
{
    citire();
    dijkstra(1);

    for(int i=1; i<=n; i++)
        if(i!=1)
    {

        g<<d[i]<<" ";
   // g<<'\n';
    }
    return 0;
}