Cod sursa(job #800645)

Utilizator oancea_horatiuOancea Horatiu oancea_horatiu Data 22 octombrie 2012 11:28:04
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <queue>
#define inf 1000009;
using namespace std;
ifstream d("dijkstra.in");
ofstream o("dijkstra.out");
signed int n,m,a,b,c,i,j,t,e[50009],ad[5000][5000],n1,n2,vec;
bool v[50009];
int main()
  {
    queue <int> q;
    d>>n>>m;
    for (i=1;i<=n;i++) for (j=1;j<=n;j++) ad[i][j]=-1;
    for (i=1;i<=m;i++) {d>>a>>b>>c; ad[a][b]=c;};
    q.push(1);
    for (i=1;i<=n;i++) e[i]=inf;
    e[1]=0;
    while (!q.empty())
      {
        n1=q.front();
        q.pop();
        for (i=1;i<=n;i++)
          if ((ad[n1][i]>=0)&(!v[i]))
            if (e[i]>e[n1]+ad[n1][i])
              {e[i]=e[n1]+ad[n1][i]; q.push(i);};
        v[n1]=1;
      };
    for (i=2;i<=n;i++)
      if (e[i]==1000009) o<<0<<' ';
        else o<<e[i]<<' ';
  };