Pagini recente » Cod sursa (job #95863) | fmi-no-stress-9-warmup/solutii | onis-2014/solutii-runda-4 | Istoria paginii jc2021/solutii/veverite | Cod sursa (job #2171551)
#include <fstream>
#include <vector>
#include <queue>
#define nmax 50005
#define mmax 250005
#define inf 2000000005
using namespace std;
fstream f1("dijkstra.in", ios::in);
fstream f2("dijkstra.out", ios::out);
int n, m, dist[nmax], viz[nmax];
priority_queue <pair<int, int>, vector<pair<int, int> >, greater<pair<int, int>> > q;
vector <pair<int, int> > v[nmax];
void citire()
{
int i, x, y, c;
f1>>n>>m;
for(i=1; i<=m; i++)
{
f1>>x>>y>>c;
v[x].push_back({y, c});
}
for(i=2; i<=n; i++)
dist[i]=inf;
}
void solve()
{
int nod, vec, cost, i ;
q.push({0, 1});
while(!q.empty())
{
nod=q.top().second;
q.pop();
viz[nod]=1;
for(auto it=v[nod].begin(); it!=v[nod].end(); ++it)
if(!viz[(*it).first])
{
vec=(*it).first;
cost=(*it).second;
if(dist[vec]> cost+dist[nod])
{
dist[vec]=cost+dist[nod];
q.push({dist[vec], vec});
}
}
}
for(i=2; i<=n; i++)
if(dist[i]==inf) f2<<0<<' ';
else f2<<dist[i]<<' ';
}
int main()
{
citire();
solve();
return 0;
}