Cod sursa(job #1414889)

Utilizator roberta9533Pavel Roberta roberta9533 Data 3 aprilie 2015 11:30:29
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include<fstream>
#include<vector>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector <int> G[50001];
vector <int> C[250001];
int viz[250001];
int drum[50001];

int main()
{
    int n,m,x,y,index1,index2,cost,v[250001];
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>cost;
        G[x].push_back(y);
        C[x].push_back(cost);
    }
    v[1]=1;
    viz[1]=1;
    index1=0;
    index2=1;
    while(index1<=index2)
        {
            x=v[++index1];
            for(int i=0;i<G[x].size();i++)
                if(viz[G[x][i]]==0)
                    {
                        y=G[x][i];
                        drum[y]=drum[x]+C[x][i];
                        for(int j=0;j<G[y].size();j++)
                            if(drum[y]>(drum[G[x][j]]+C[x][j]))
                                drum[y]=drum[G[x][j]]+C[x][j];
                        v[++index2]=G[x][i];
                        viz[G[x][i]]=1;
                    }
        }
    for(int i=2;i<=index2;i++)
        g<<drum[i]<<" ";
    return 0;
}