Cod sursa(job #3258207)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 21 noiembrie 2024 16:07:21
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#define NMAX 2002
using namespace std;
ifstream  fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,M,cost[NMAX],viz[NMAX],A[NMAX][NMAX];

int main()
{
    int a,b,c;
    fin>>N>>M;

    for(int i=1; i<=N; i++)
    {
        cost[i]=1000000002;
        for(int j=1; j<=N; j++)
        {
            A[i][j]=1000000002;
        }
    }

    for(int i=1; i<=M; i++)
    {
        fin>>a>>b>>c;
        A[a][b]=A[b][a]=c;
    }

    cost[1]=0;
    for(int i=1; i<=N; i++)
    {
        int vmin,nod;
        nod=0;
        vmin=1000000002;

        for(int j=1; j<=N; j++)
        {
            if(!viz[j] && cost[j]<vmin)
            {
                vmin=cost[j];
                nod=j;
            }
        }

        viz[nod]=1;
        for(int j=1; j<=N; j++)
        {
            if(!viz[j] && cost[nod]+A[nod][j]<cost[j])
            {
                cost[j]=cost[nod]+A[nod][j];
            }
        }
    }

    for(int i=2; i<=N; i++)
    {
        fout<< cost[i] << " ";
    }
    fout<< "\n";

    return 0;
}