Cod sursa(job #2384940)

Utilizator AlexNecula99Necula Florin-Alexandru AlexNecula99 Data 21 martie 2019 12:35:33
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.49 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <limits>

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]=1000007;
    int ok=0;
    int index;
    while(ok==0)
    {
        ok=1;
        for(i=1;i<=n;i++)
        {
            if(viz[i]==0) ok=0;
        }
        if(ok==0)
        {
            int minim=1000007;
            for(j=1;j<=n;j++)
            {
                if(viz[j]==0 && dist[j]<minim)
                    minim=dist[j];
            }
            for(j=1;j<=n;j++)
                if(dist[j]==minim)
                {
                    viz[j]=1;
                    index=j;
                    break;
                }
            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]==1000007) g<<0<<" ";
        else
            g<<dist[i]<<" ";
    }
}