Pagini recente » Cod sursa (job #2039424) | Cod sursa (job #1149585) | Cod sursa (job #2355719)
#include<fstream>
#include<iostream>
#include<set>
#include<vector>
using namespace std;
int n,m,i,j,viz[50005],r[50005],q,a,b,minim,contor,x,y,z,w;
set< pair<int,int> > s;
vector <int> v[50005],d[50005];
int main()
{
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
in>>n>>m;
for(i=2;i<=n;i++)
{
r[i]=1<<30;
}
r[1]=0;
for(i=1;i<=m;i++)
{
in>>x>>y>>z;
v[x].push_back(y);
d[x].push_back(z);
}
s.insert(make_pair(0,1));
contor++;
while(contor>0)
{
w=s.begin()->first;
q=s.begin()->second;
if(viz[q]==1)
{
s.erase(s.begin());
contor--;
}
else
{
viz[q]=1;
minim=1<<30;
for(i=0;i<v[q].size();i++)
{
if(r[v[q][i]]>r[q]+d[q][i])
{
r[v[q][i]]=r[q]+d[q][i];
s.insert(make_pair(r[v[q][i]],v[q][i]));
contor++;
}
}
}
}
for(i=2;i<=n;i++)
{
if(r[i]==1<<30)
out<<"0 ";
else
out<<r[i]<<' ';
}
}