Pagini recente » Cod sursa (job #474484) | Cod sursa (job #1133879) | Cod sursa (job #2632940) | Cod sursa (job #1584840) | Cod sursa (job #2477024)
#include <bits/stdc++.h>
#define M 50005
#define INF 1 << 30
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m,dist[M];
bool viz[M];
vector<pair<int,int> >lista[M];///dist nod
priority_queue<pair<int,int> >q;///dist nod
void dijkstra()
{
for(int i=1;i<=n;i++)
dist[i]=INF;
dist[1]=0;
q.push({0,1});
while(!q.empty())
{
int a=q.top().second;
q.pop();
if(viz[a])
continue;
viz[a]=true;
for(auto x:lista[a])
{
int d=x.first;
int nod=x.second;
if(dist[a]+d<dist[nod])
{
dist[nod]=dist[a]+d;
q.push({-dist[nod],nod});
}
}
}
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,d;
in>>x>>y>>d;
lista[x].push_back({d,y});
}
dijkstra();
for(int i=2;i<=n;i++)
{
if(viz[i])
out<<dist[i]<<' ';
else
out<<0<<' ';
}
return 0;
}