Cod sursa(job #2384959)

Utilizator AlexNecula99Necula Florin-Alexandru AlexNecula99 Data 21 martie 2019 12:52:47
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <limits.h>

using namespace std;

vector <int> graph[100005];
vector <int> graphC[100005];
int viz[100005],dist[100005];

int main()
{
    ifstream f("dijkstra.in");
    ofstream g("dijkstra.out");
    int n,m;
    f>>n>>m;
    int i,a,b,c;
    for(i=0; i<m; i++)
    {
        f>>a>>b>>c;
        graph[a].push_back(b);
        graphC[a].push_back(c);
    }
    int s=1;
    dist[s]=0;
    int j;
    for(i=2; i<=n; i++)
        dist[i]=100000000;
    int ok=0;
    int index;
    for(i=1; i<=n; i++)
       {
           int i,minim=999999999,index;
    for(int t = 1; t <= n; t++)
    {
        minim = 1000000000;
        for(i=1; i<=n; i++)
            if(!viz[i] && dist[i]<minim)
            {
                minim=dist[i];
                index=i;
            }
        viz[index] = 1;
        int lim=graph[index].size();
        for(i=0; i<lim; i++)
        {
            int vecin=graph[index][i];
            int cost = graphC[index][i];
            if(dist[index]+cost <dist[vecin])
                dist[vecin]=dist[index]+cost;
        }
    }
    }
    for(i=2; i<=n; i++)
    {
        if(dist[i]==100000000)
            g<<0<<" ";
        else
            g<<dist[i]<<" ";
    }
}