Cod sursa(job #1437320)

Utilizator roberta9533Pavel Roberta roberta9533 Data 17 mai 2015 14:39:05
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include<fstream>
#include<vector>
#include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector <int> G[50001];
vector <int> C[250001];
queue <int> Q;
int viz[50001];
int drum[250001];

int main()
{
    int n,m,x,y,cost;
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>cost;
        G[x].push_back(y);
        C[x].push_back(cost);
    }
    Q.push(1);
    viz[1]=1;
    drum[1]=0;
    for(int i=2;i<=n;i++)
        drum[i]=1000000000;
    while(Q.empty()==0)
        {
            x=Q.front();
            viz[x]=0;
            for(int i=0;i<G[x].size();i++)
                if(drum[G[x][i]]>(drum[x]+C[x][i]))
                {
                    drum[G[x][i]]=drum[x]+C[x][i];
                    if(viz[G[x][i]]==0)
                    {
                        Q.push(G[x][i]);
                        viz[G[x][i]]=1;
                    }
                }
            Q.pop();
        }
    for(int i=2;i<=n;i++)
        if(drum[i]!=1000000000)
            g<<drum[i]<<" ";
        else g<<0<<" ";
    return 0;
}