Pagini recente » Cod sursa (job #796750) | Cod sursa (job #1179380) | Cod sursa (job #646766) | Cod sursa (job #94557) | Cod sursa (job #2479009)
#include <bits/stdc++.h>
#define M 50005
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int INF=INT_MAX-1;
vector<pair<int,int> >lista[M];
int n,m,dist[M];
bool viz[M];
struct compara{
bool operator()(int x,int y)
{
return dist[x]>dist[y];
}
};
priority_queue<int, vector<int>, compara>q;
void dijkstra(int node)
{
for(int i=1;i<=n;i++)
{
dist[i]=INF;
viz[i]=false;
}
dist[node]=0;
q.push(node);
while(!q.empty())
{
int a=q.top();
q.pop();
if(viz[a])
continue;
viz[a]=true;
for(auto b:lista[a])
{
if(dist[a]+b.second<dist[b.first])
{
dist[b.first]=dist[a]+b.second;
q.push(b.first);
}
}
}
}
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(1);
for(int i=2;i<=n;i++)
{
out<<dist[i]<<' ';
}
return 0;
}