Pagini recente » Cod sursa (job #3211702) | Cod sursa (job #1627959) | Cod sursa (job #140347) | Cod sursa (job #2374014) | Cod sursa (job #2477022)
#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];///nod distanta
priority_queue<pair<int,int> >q;
void dijkstra()
{
for(int i=1;i<=n;i++)
dist[i]=INF;
dist[1]=0;
q.push({1,0});
while(!q.empty())
{
int a=q.top().first;
q.pop();
if(viz[a])
continue;
viz[a]=true;
for(auto x:lista[a])
{
int nod=x.first;
int d=x.second;
if(dist[a]+d<dist[nod])
{
dist[nod]=dist[a]+d;
q.push({nod,-dist[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({y,d});
}
dijkstra();
for(int i=2;i<=n;i++)
out<<dist[i]<<' ';
return 0;
}