Pagini recente » Cod sursa (job #576448) | Cod sursa (job #126364) | Cod sursa (job #2689953) | Cod sursa (job #3172684) | Cod sursa (job #2574189)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define INF 99999999L
using namespace std;
ifstream fi("dijkstra.in");
ofstream fo("dijkstra.out");
int n,m;
int rez[50001];
int viz[50001];
vector< pair<int,int> > v[50001];
priority_queue< pair<int,int> > pq;
int main()
{
fi>>n>>m;
int a,b,c;
for(int i=0;i<m;i++)
{
fi>>a>>b>>c;
v[a].push_back({b,c});
}
for(int i=1;i<=n;i++)
rez[i]=INF;
rez[1]=0;
pq.push({0,1});
pair<int,int> p;
pair<int,int> adj;
int vecin, tarif;
while(!pq.empty())
{
p=pq.top();
pq.pop();
int vf,cost;
vf=p.second;
cost=-p.first;
if(viz[vf]==1)
continue;
viz[vf]=1;
vector<pair<int, int> > :: iterator it;
for(it=v[vf].begin();it!=v[vf].end();it++)
{
adj=(*it);
vecin=adj.first;
tarif=adj.second;
if(cost+tarif<rez[vecin])
{
rez[vecin]=cost+tarif;
pq.push({-rez[vecin],vecin});
}
}
}
for(int i=2;i<=n;i++)
{
if(rez[i]==INF)
fo<<0<<" ";
else
fo<<rez[i]<<" ";
}
fi.close();
fo.close();
return 0;
}