Cod sursa(job #1706737)

Utilizator mihaelatd96Tudor Mihaela Daniela mihaelatd96 Data 23 mai 2016 08:02:10
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 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=0x3f3f3f3f;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector< vector <pair < int, int> > > graph;
vector <pair < int, int> >  :: iterator iter;
vector<bool> visited;
vector<int> distanta;
queue<int> coada;
int n,m;

int main()
{
  int aux=0;
  f>>n>>m;
  graph.resize(m);
  distanta.resize(n,infinit);
  visited.resize(n,0);
  distanta[1] = 0;
  visited[1] = 1;
  coada.push(1);
  for (int i=0; i<m; i++)
  {
    int x,y,z;
    f>>x>>y>>z;

    graph[x].push_back(make_pair(y,z));
  }

  while(coada.size()>0)
  {
    aux=coada.front();
    coada.pop();
    visited[aux]=0;
    for(iter=graph[aux].begin(); iter!=graph[aux].end(); iter++)
      if(distanta[aux]+iter->second<distanta[iter->first])
      {
        distanta[iter->first]=distanta[aux]+iter->second;
        if(!visited[iter->first])
        {
          coada.push(iter->first);
          visited[iter->first]=1;
        }
      }
  }
  for (int j = 2; j<=n; j++)
    {
        if(distanta[j]==infinit)
      distanta[j]=0;
     g<<distanta[j]<<' ';}
     g<<'\n';

  return 0;
}