Pagini recente » Cod sursa (job #2114373) | Cod sursa (job #3032769) | Cod sursa (job #357401) | Cod sursa (job #1641385) | Cod sursa (job #2681417)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
struct ura
{
int b,cost;
};
const int INF=1e9;
vector <ura> v[50001];
priority_queue <pair<int,int>> pq;
bool viz[50001];
int dist[50001];
int main()
{
int n,m,i,j;
in>>n>>m;
for(i=1; i<=m; i++)
{
int x,y,c;
in>>x>>y>>c;
v[x].push_back({y,c});
}
for(i=1; i<=n; i++)
{
dist[i]=INF;
}
dist[1]=0;
pq.push({0,1});
while (!pq.empty())
{
int curr=pq.top().second;
pq.pop();
if (viz[curr]==0)
{
for (i=0; i<v[curr].size(); i++)
{
int next=v[curr][i].b;
int cst=v[curr][i].cost;
if (dist[curr]+cst<dist[next])
{
dist[next]=dist[curr]+cst;
pq.push({-dist[next],next});
}
}
viz[curr]=1;
}
}
for(i=2;i<=n;i++)
{
if(dist[i]!=INF)
out<<dist[i]<<" ";
else
out<<"0 ";
}
return 0;
}