Cod sursa(job #1848959)

Utilizator ZIPPOIon Gheo ZIPPO Data 16 ianuarie 2017 21:35:32
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
int n;
int x,y,w;
int a[100][100];
int dis[100];
int viz[100];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int dij(int x)
{
    viz[x]=1;
    for(int i=1; i<=n; i++)
        if(viz[i]==0 && a[x][i]!=-1)
            if(dis[x]+a[x][i]<dis[i] || dis[i]==-1)
                dis[i]=dis[x]+a[x][i];
    int smaller=-1,sw=-1;
    for(int i=0; i<=n; i++)
        if((viz[i]==0) && (dis[i]>=0) && ((sw>dis[i]) || (sw==-1)))
        {
            sw=dis[i];
            smaller=i;
        }
    if(smaller!=-1)
    {
        dij(smaller);
        return 0;
    }
    return 0;
}

int main()
{   int t;
    f>>n;
    f>>t;
    for(int i=0; i<=n; i++)
    {
        for(int j=0; j<=n; j++)
            a[i][j]=-1;
    }
    for(int i=0; i<=n; i++)
        dis[i]=-1;
    dis[1]=0;
    while(!f.eof())
    {
        f>>x>>y>>w;
        a[x][y]=w;
        a[y][x]=w;
    }
    dij(1);
    for(int i=2; i<=n; i++)
        g<<dis[i]<<" ";

}