Pagini recente » Borderou de evaluare (job #419009) | Atasamentele paginii Profil crash | Borderou de evaluare (job #3337243) | Borderou de evaluare (job #3350671) | Cod sursa (job #3337225)
#include <bits/stdc++.h>
using namespace std;
#define INF 10e8
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int NMAX=10e5;
int n,m,d[NMAX];
vector<pair<int,int>> G[NMAX];
priority_queue< pair<int,int>, vector<pair<int,int>> , greater<pair<int,int>>> Q;
void Dijkstra(int start)
{
d[start]=0;
Q.push({0,start});
while(!Q.empty())
{
auto [dist,nod]=Q.top();
Q.pop();
if(dist!=d[nod])
{
continue;
}
for(auto v:G[nod])
{
int vecin=v.first,cost=v.second;
if(cost+dist<d[vecin])
{
d[vecin]=cost+dist;
Q.push({d[vecin],vecin});
}
}
}
}
int main() {
int start=1;
f>>n>>m;
for(int i=0;i<m;++i)
{
int x,y,z;
f>>x>>y>>z;
G[x].push_back({y,z});
}
for(int i=1;i<=n;++i)
{
d[i]=INF;
}
Dijkstra(start);
for(int i=2;i<=n;++i)
{
if(d[i]!=INF)
{
g<<d[i]<<" ";
}
else
{
g<<0<<" ";
}
}
return 0;
}