Pagini recente » Cod sursa (job #674342) | Cod sursa (job #160328) | Cod sursa (job #832200) | Cod sursa (job #851198) | Cod sursa (job #2374680)
#include <fstream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m,i,x,y,c;
priority_queue < pair<int,int> , vector<pair<int,int>> , greater< pair<int,int>> > q;
int cost[50500];
vector<pair<int,int>> g[50500];
void dijkstra(int x)
{
memset(cost,0x3f,sizeof(cost));
cost[x] = 0;
q.push({0,x});
while(!q.empty())
{
int node = q.top().second;
int dist = q.top().first;
q.pop();
if(cost[node] < dist) continue;
for(auto vec : g[node])
{
if(cost[vec.first] > dist + vec.second)
{
cost[vec.first] = vec.second + dist;
q.push({vec.second+dist, vec.first});
}
}
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=m;++i)
{
cin>>x>>y>>c;
g[x].push_back({y,c});
}
dijkstra(1);
for(i=2;i<=n;++i)
{
if(cost[i] == 0x3f3f3f3f)
{
cout<<"0 ";
continue;
}
cout<<cost[i]<<" ";
}
return 0;
}