Pagini recente » Cod sursa (job #1933077) | Cod sursa (job #2043507) | Cod sursa (job #81877) | Cod sursa (job #2028716) | Cod sursa (job #2721859)
#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],d[50005];
struct nod{int val,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;
}