Pagini recente » Cod sursa (job #1400977) | Cod sursa (job #2027555) | Cod sursa (job #2895281) | Cod sursa (job #1742995) | Cod sursa (job #1778389)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector <pair <int,int > > x[50001];
queue <int> q;
int n,m,i,a,b,d,dst[50001],t[50001],j,ok,Min,k;
bool check[50001];
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b>>d;
x[a].push_back(make_pair(b,d));
}
for(i=1;i<=n;i++)
dst[i]=INT_MAX;
ok=1;
dst[1]=0;
while(ok)
{
Min=INT_MAX;
for(i=1;i<=n;i++)
{
if(!check[i]&&Min>dst[i])
{
Min=dst[i];
k=i;
}
}
if(Min!=INT_MAX)
{
check[k]=1;
for(i=0;i<x[k].size();i++)
{
if(!check[x[k][i].first]&&dst[x[k][i].first]>dst[k]+x[k][i].second)
{
dst[x[k][i].first]=dst[k]+x[k][i].second;
t[x[k][i].first]=k;
}
}
}
else ok=0;
}
for(i=2;i<=n;i++)fout<<dst[i]<<" ";
fin.close();
fout.close();
return 0;
}