Cod sursa(job #1513260)

Utilizator eden001Muntean Natan eden001 Data 29 octombrie 2015 10:42:28
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>
using namespace std;
long m,n;
int a[22301][22301];
int distanta[22301];
int viz[22301];
void citeste(){
    ifstream f("dijkstra.in");
    f>>n>>m;
    int x,y,z;
    for(long i=1;i<=m;i++){
        f>>x>>y>>z;
        a[x][y]=z;
    }
}
void dijkstra(){
    int minim,nod,i;
    for(i=1;i<=n;i++)distanta[i]=32767;
    distanta[1]=0;
    for(i=1;i<=n;i++){
        minim=32767;
        for(int j=1;j<=n;j++)
            if((distanta[j]<minim)&&(viz[j]==0)){
                nod=j; minim=distanta[j];
            }
        viz[nod]=1;
        for(int j=1;j<=n;j++)
            if((a[nod][j]>0)&&(a[nod][j]+distanta[nod]<distanta[j]))distanta[j]=a[nod][j]+distanta[nod];
    }
}
int main(){
    ofstream g("dijkstra.out");
    int i;
    citeste();
    dijkstra();
    for(i=2;i<=n;i++)g<<distanta[i]<<" ";
    g.close();
}