Cod sursa(job #2284251)

Utilizator Alex_P_ltibAlex Popescu Alex_P_ltib Data 17 noiembrie 2018 08:52:04
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int main()
{
    int n, m, x, y, cost;
    f>>n>>m;
    long **G;
    G=new long *[n+1];
    for(int i=0;i<=n;i++)
    {
        G[i]=new long [n+1];
        for(int j=1;j<=n;j++)
            G[i][j]=0;
    }
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>cost;
        G[x][y]=cost;
    }
    long sol[n+1];
    for(int i=1;i<=n;i++)
        sol[i]=99999999;
    sol[1]=0;
    long coada[m+1], p, u;
    p=u=1;
    coada[p]=1;
    while(p<=u)
    {
        for(int j=1;j<=n;j++)
        {
            if(G[coada[p]][j]!=0) //daca exista muchie
            {
                if(G[coada[p]][j]+sol[coada[p]]<sol[j])
                {
                    sol[j]=G[coada[p]][j]+sol[coada[p]];
                    coada[++u]=j;
                }
            }
        }
        p++;
    }
    for(int i=2;i<=n;i++)
        g<<sol[i]<<' ';
    for(int i=0;i<=n;i++)
        delete[] G[i];
    delete[] G;
    f.close();
    g.close();
    return 0;
}