Cod sursa(job #1828949)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 14 decembrie 2016 08:55:53
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#include <vector>
#define INF 1000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct nume{
    int vec,cost;
};
int s[50001],d[50001];
vector <nume> a[50001];
vector <int>::iterator ind;
int main()
{
    int n,i,j,m,x,y,indmin,minim,c;
    nume var;
    fin>>n;
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>c;
        var.vec=y;var.cost=c;
        a[x].push_back(var);
    }
    s[1]=1;
    for(i=2;i<=n;i++)
        d[i]=INF;
    j=0;
    for(j=0;j<a[1].size();j++)
    {
        i=a[1][j].vec;
        d[i]=a[1][j].cost;
    }
    for(int k=2;k<=n;k++)
    {
        minim=INF;
        for(j=2;j<=n;j++)
            if(s[j]==0)
            {
                if(minim>d[j])
                {
                    minim=d[j];
                    indmin=j;
                }
            }
        s[indmin]=1;
        j=0;
        for(j=0;j<a[indmin].size();j++)
        {
            i=a[indmin][j].vec;
            d[i]=min(d[i],minim+a[indmin][j].cost);
        }
    }
    for(i=2;i<=n;i++)
        if(d[i]!=INF)
        {
            fout<<d[i]<<' ';
        }
        else
            fout<<0<<' ';
    return 0;
}