Cod sursa(job #744870)

Utilizator memaxMaxim Smith memax Data 9 mai 2012 21:03:41
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

int main(){
    ifstream cinr ("dijkstra.in");
    ofstream cour ("dijkstra.out");
    const int inf = 1 << 30;
    int n,m,a,b,it;
    cinr >> n;
    cinr >> m;
    vector< vector<int> > g(n+1);
    int d[n+1], c[n+1], p[n+1];
    for(int i=1; i<=m; i++){
            cinr >> a;
            cinr >> b;
            cinr >> it;
            g[a].push_back(b);
            g[a].push_back(it);
            }
    for(int i=1; i<=n; i++){
            d[i]=inf;
            p[i]=0;
            c[i]=0;
            }
    d[0]=inf+1;       
    d[1]=0;
    int y,w;
    for(int i=1; i<=n+1; i++){
            y=0;
            for(int j=1; j<=n; j++){
                    if(d[j]<d[y] && c[j]==0){ y=j; }
                    }
            c[y]=1;
            for(int k=0; k<g[y].size(); k+=2){
                    w=g[y][k];
                    if(d[w]>d[y]+g[y][k+1]){ d[w]=d[y]+g[y][k+1]; }
                    }           
            }
    for(int i=2; i<=n; i++){
            if(d[i]>=inf){ cour << "0 ";}
            else         { cour << d[i] << " ";}
            } 
    //cin.ignore(2);
               
    return 0;
    }