Cod sursa(job #2384949)

Utilizator AlexNecula99Necula Florin-Alexandru AlexNecula99 Data 21 martie 2019 12:45:24
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 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]=1000005;
    int ok=0;
    int index;
    for(i=1; i<=n; i++)
        if(viz[i]==0)
        {
            int minim=1000005;
            for(j=1; j<=n; j++)
            {
                if(viz[j]==0 && dist[j]<minim)
                {
                    minim=dist[j];
                    index=j;
                }
            }
            viz[index]=1;
            int lim=graph[index].size();
            for(j=0; j<lim; j++)
            {
                int vecin=graph[index][j];
                int cost=graphC[index][j];
                if(dist[index]+cost<dist[vecin])
                    dist[vecin]=dist[index]+cost;
            }
        }
    for(i=2; i<=n; i++)
    {
        if(dist[i]==1000005)
            g<<0<<" ";
        else
            g<<dist[i]<<" ";
    }
}