Pagini recente » Cod sursa (job #1273371) | Cod sursa (job #1356855) | Cod sursa (job #1159367) | Cod sursa (job #724678) | Cod sursa (job #2171538)
#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];
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;
//ct=q.top().first;
q.pop();
//if(ct==dist[nod])
for(auto it=v[nod].begin(); it!=v[nod].end(); ++it)
{
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;
}