Cod sursa(job #1129612)

Utilizator gigamhzAndrei gigamhz Data 28 februarie 2014 00:03:14
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

const int INF=1.e20;

struct graf{
int x;
int cost;

};

vector<graf> a[100];
int best[100],c[100];
int n,nodr;

void citire(){
f>>n>>nodr;
int y;
graf y1;
while(f>>y>>y1.x>>y1.cost){
    a[y].push_back(y1);

}

}
void dijkstra(int nod){

int i;
int p,u;
p=u=1;
c[1]=nod;
while(p<=u && u<=n){

    for(i=0;i<a[c[p]].size();i++){
        if(best[a[c[p]][i].x]> a[c[p]][i].cost+best[c[p]]){
            u++;
            c[u]=a[c[p]][i].x;
            best[a[c[p]][i].x] = a[c[p]][i].cost + best[c[p]];
        }

    }


    p++;
}
for(i=2;i<=n;i++)g<<best[i]<<" ";
}


int main()
{
    citire();
    for(int i=1;i<=n;i++)
        best[i]=INF;
    best[nodr]=0;

    dijkstra(nodr);

    return 0;
}