Pagini recente » Cod sursa (job #1048453) | Cod sursa (job #2426161) | Cod sursa (job #1803270) | Cod sursa (job #46996) | Cod sursa (job #2376287)
#include <bits/stdc++.h>
#define dim 50005
#define inf int(1e9)
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct yup
{
int cost,x;
bool operator < (const yup &other) const
{
return cost>other.cost;
}
};
priority_queue <yup> q;
struct dijkstra
{
int cost,x;
};
vector <dijkstra> graph[dim];
int n,m,dist[dim];
void Read()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
int x,y,cost;
f>>x>>y>>cost;
graph[x].push_back({cost,y});
}
}
void Dijkstra()
{
q.push({0,1});
for(int i=2;i<=n;++i)dist[i]=inf;
while(!q.empty())
{
int node=q.top().x;
int cost=q.top().cost;
q.pop();
if(cost!=dist[node])continue;
for(int i=0;i<graph[node].size();++i)
{
int son=graph[node][i].x,path=graph[node][i].cost;
if(dist[son]>dist[node]+path)
{
dist[son]=dist[node]+path;
q.push({dist[son],son});
}
}
}
for(int i=2;i<=n;++i)
if(dist[i]==inf)
g<<0<<" "; else
g<<dist[i]<<" ";
}
int main()
{
Read();
Dijkstra();
return 0;
}