Pagini recente » Cod sursa (job #2468495) | Cod sursa (job #1632263) | Cod sursa (job #1779935) | Cod sursa (job #1062875) | Cod sursa (job #2721858)
#include<fstream>
#include<vector>
#include<queue>
#define pinf 1000000005
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,viz[50005];
long long d[50005];
struct nod{int val;
long long co;};
vector<nod>v[50005];
struct comp
{
bool operator()(nod a,nod b)
{
return a.co>b.co;
}
};
priority_queue<nod,vector<nod>,comp>q;
void citire()
{
int x,y;
nod aux;
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y>>aux.co;
aux.val=y;
v[x].push_back(aux);
aux.val=x;
v[y].push_back(aux);
}
}
void dijkstra()
{
nod aux;
viz[1]=1; d[1]=0;
for(int i=2;i<=n;i++)
{
d[i]=pinf;
viz[i]=0;
}
for(int i=0;i<v[1].size();i++)
{
d[v[1][i].val]=v[1][i].co;
aux.val=v[1][i].val;
aux.co=v[1][i].co;
q.push(aux);
}
while(!q.empty())
{
int x=q.top().val;
if(viz[x]==0)
{
viz[x]=1;
for(int i=0;i<v[x].size();i++)
{
if(viz[v[x][i].val]==0 && d[x]+v[x][i].co<d[v[x][i].val])
{
d[v[x][i].val]=d[x]+v[x][i].co;
aux.val=v[x][i].val;
aux.co=d[v[x][i].val];
q.push(aux);
}
}
}
q.pop();
}
}
int main()
{
citire();
dijkstra();
for(int i=2;i<=n;i++)
{
if(d[i]==pinf)
fout<<0<<" ";
else
fout<<d[i]<<" ";
}
fin.close();
fout.close();
return 0;
}