Cod sursa(job #1706730)

Utilizator mihaelatd96Tudor Mihaela Daniela mihaelatd96 Data 23 mai 2016 07:49:13
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include<vector>
#include<fstream>
#include<utility>
#include<queue>
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
const int infinit= 999999;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector<int>  graf[50001];
vector<int> costuri[50001];
int dist_min[50001];
int n,m;

void dijkstra(int nod)
{queue<int> coada;
int size_, x1,x2,cost;
    for(int i=1;i<=n;i++)
        dist_min[i]=infinit;
dist_min[nod]=0;
coada.push(nod);
         while(!coada.empty())
         {
              x1=coada.front();
             coada.pop();
             size_=graf[x1].size();
             for(int j=0;j<size_;j++)
             {
                  x2=graf[x1][j];
                  cost=costuri[x1][j];
                 if(dist_min[x2]>dist_min[x1]+cost)
                 {
                  dist_min[x2]  = dist_min[x1]+cost;
                  coada.push(x2);
                 }

             }
         }
}

int main()
{
  f>>n>>m;
  for (int i=0; i<m; i++)
  {
    int x,y,z;
    f>>x>>y>>z;

    graf[x].push_back(y);
    costuri[x].push_back(z);
  }
  int nod=1;
   dijkstra(1);

  for (int j = 1; j<=n; j++)
    {if(j==nod)continue;
        if(dist_min[j]==infinit)
        g<<"0";
    else g<<dist_min[j]<<" ";}

  return 0;
}