Cod sursa(job #2528303)

Utilizator CarlaDianaCarla Diana CarlaDiana Data 21 ianuarie 2020 18:59:59
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n,a,b,c,ma[105][105],v[105],viz[105],nr,minn,rang,m;
int main()
{
    fin>>n>>m;
    for(;m;m--)
    {
        fin>>a>>b>>c;
        ma[a][b]=c;
        if(a==1)
            v[b]=c;
    }
    viz[1]=1;
    nr=n-1;
    for(int k=1;k<n;k++)
    {
        minn=2000000;
        for(int i=1;i<=n;i++)
        {
            if(viz[i]==0&&v[i]<minn&&v[i]!=0)
            {
                minn=v[i];
                rang=i;
            }
        }
        viz[rang]=1;
        for(int i=1;i<=n;i++)
        {
            if(ma[rang][i]!=0&&viz[i]==0&&(v[i]>v[rang]+ma[rang][i]||v[i]==0))
                v[i]=v[rang]+ma[rang][i];
        }
    }
    for(int i=2;i<=n;i++)
    {
        if(v[i]==0)
            fout<<-1<<" ";
        else
            fout<<v[i]<<" ";
    }

    return 0;
}
/*
5 1
1 2 4
1 3 3
2 4 4
2 5 8
3 2 5
4 3 4
5 4 2
5 1 2
*/