Cod sursa(job #1170037)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 12 aprilie 2014 16:40:15
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>

#define x first
#define y second

using namespace std;

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

vector< pair<long long,long long> > l[105];
vector< pair<long long,long long> >::iterator it;

pair<long long,long long> s;

long long n,p,v[105],i,k,st,dr,c;

long long d[105],Min;

const long long INF = (1LL<<61);

int main() {
    f>>n>>p;
    while(f>>st>>dr>>c) {
        s.x=dr;
        s.y=c;
        l[st].push_back(s);
    }
    for(i=1;i<=n;i++)
        d[i]=INF;
    d[p]=0;
    for(;;) {
        Min=INF;
        for(i=1;i<=n;i++)
            if(Min>d[i] && v[i]==0) {
                k=i;
                Min=d[i];
            }
            if(Min==INF)
                break;
            v[k]=1;
            for(it=l[k].begin();it!=l[k].end();it++)
                if(v[it->x]==0 && d[it->x]>d[k]+it->y) {
                    d[it->x]=d[k]+(it->y);
                }
    }
    for(i=1;i<=n;i++)
        if(d[i]==INF)
            g<<"-1 ";
        else
            g<<d[i]<<" ";
    return 0;
}