Cod sursa(job #895259)

Utilizator andramihutAndra-Lavinia Mihut andramihut Data 27 februarie 2013 10:41:59
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int N, M, A, B, C, viz[56], x, y, z, mini, d[56], t[56], c[56][56], i, j;
void dijkstra(int x)
{viz[x]=1;
for(i=1;i<=N;i++){
d[i]=c[x][i];
if(d[i]!=0 && d[i]!=10000)
t[i]=x;}
while (y<N) {
mini=10000;
for(i=1;i<=N;i++)
if(d[i]<mini && !viz[i]){
mini=d[i];
z=i;}
for(i=1;i<=N;i++)
if(!viz[i] && d[z]+c[z][i]<d[i])
{d[i]=d[z]+c[z][i];
viz[i]=1;
t[i]=z;}
y++;
}}
void citire(){
f>>N>>M;
for(i=1;i<=M;i++)
{f>>A>>B>>C;
if (c[x][y]==0){
 c[A][B]=C;
 c[B][A]=C;}
else if(C<c[A][B]){
 c[A][B]=C;
 c[B][A]=C;}
 }
for (i=1;i<=N;i++)
  for(j=1;j<=N;j++)
    if(i!=j && c[i][j]==0)
        c[i][j]=10000;
}
int main(){
citire();
dijkstra(1);
for(i=2;i<=N;i++)
 g<<d[i]<<" ";
f.close();
g.close();
return 0;
}