Cod sursa(job #1585811)

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

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int d[1003],t[1003],n,m,Min;
int c[1003][1003];
int r,s[1003];
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;
            }
    }
}
int main()
{
    citire();
    dijkstra(1);

    for(int i=1; i<=n; i++)
        if(i!=1)
    {
       if(d[i]==10000)
        d[i]=0;
        g<<d[i]<<" ";
   // g<<'\n';
    }
    return 0;
}