Pagini recente » Cod sursa (job #2628458) | Cod sursa (job #2125410) | Cod sursa (job #2757213) | Cod sursa (job #2161223) | Cod sursa (job #1572903)
#include<iostream>
#include <fstream>
#include <vector>
#include <queue>
#define nmax 50005
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector< pair<int,int> > v[nmax];
int n,m;
bool use[nmax];
int D[nmax];
void citire()
{
fin>>n>>m;
for(int i=0;i<m;i++)
{
int x,y,z;
fin>>x>>y>>z;
v[x].push_back(make_pair(y,z));
}
for(int i=2;i<=n;i++)
D[i]=1000000000;
fin.close();
}
void Dij(int x)
{
use[x]=1;
int j=1;
int Min=100000000;
for(int i=0;i<v[x].size();i++)
{
int nod=v[x][i].first;
int cost=v[x][i].second;
if(D[nod]>D[x]+cost)
{
D[nod]=D[x]+cost;
}
}
for(int i=2;i<=n;i++)
if(D[i]<Min && use[i]==0)
{Min=D[i];j=i;}
if(j!=1)
Dij(j);
}
void afis()
{
for(int i=2;i<=n;i++)
cout<<D[i]<<" ";
}
int main()
{
citire();
Dij(1);
afis();
}