Cod sursa(job #2338353)

Utilizator Spawnish123cezarsava Spawnish123 Data 7 februarie 2019 12:49:56
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>

using namespace std;
int a[101][101],m,n;
int v[101];
int viz[101];
int pinf=999999;
void citire()
{
    ifstream f ("dijkstra.in");
    int x,y,c;
    f>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            a[i][j]=a[j][i]=pinf;
    for(int i=1; i<=m; i++)
        f>>x>>y>>c,a[x][y]=a[y][x]=c;
}
void dj(int nod)
{
    for(int i=1; i<=n; i++)
        v[i]=pinf;
    v[nod]=0;

    int nodc=nod;

    for(int j=1; j<=n; j++)
    {
        int minn=pinf;
        viz[nodc]=1;
        for(int i=1; i<=n; i++)
            if(v[i]>v[nodc]+a[i][nodc]&&viz[i]==0)
                v[i]=v[nodc]+a[i][nodc];
        for(int i=1; i<=n; i++)
            if(minn>v[i]&&viz[i]==0)
            {
                nodc=i;
                minn=v[i];
            }
        for(int i=1; i<=n; i++)
            cerr<<v[i]<<" ";
        cerr<<endl;
    }
}
int main()
{
    citire();
    dj(1);
    ofstream g ("dijkstra.out");
    for(int i=2;i<=n;i++)
        g<<v[i]<<" ";
    return 0;
}