Cod sursa(job #2566964)

Utilizator Diamond2706Lihet Catalin Diamond2706 Data 3 martie 2020 14:11:47
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define inf 2000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct nod{int info,cost; nod *urm;};
nod *L[50010];
int n,m,x,y,cc,d[50010],c[250010];
void adauga(int x,int y,int cc)
{
  nod *p=new nod;
  p->info=y;
  p->cost=cc;
  p->urm=L[x];
  L[x]=p;
}
void bellf(int nodx)
{
  for(int i=1;i<=n;i++)d[i]=inf;
  d[nodx]=0;
  int p=1,u=1;
  c[u]=nodx;
  while(p<=u)
  {
    int j=c[p];
    p++;
    nod *p=new nod;
    p=L[j];
    while(p!=0)
    {
      if(d[p->info]>d[j]+p->cost)
      {
        d[p->info]=d[j]+p->cost;
        c[++u]=p->info;
      }
      p=p->urm;
    }
  }
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
      fin>>x>>y>>cc;
      adauga(x,y,cc);
    }
    bellf(1);
    for(int i=1;i<=n;i++)if(i!=1)fout<<d[i]<<" ";
    return 0;
}