Pagini recente » Cod sursa (job #2571914) | Cod sursa (job #510872) | Cod sursa (job #1140978) | Cod sursa (job #478213) | Cod sursa (job #2231531)
#include <fstream>
#include <queue>
#include <vector>
#define N 50005
using namespace std;
vector < pair< int, int > > v[N];
priority_queue < pair< int, int > > Q;
int cost[N];
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m;
f>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,lungime;
f>>a>>b>>lungime;
v[a].push_back(make_pair(b,lungime));
}
for(int i=1;i<=n;i++)
cost[i]=-1;
Q.push(make_pair(0,1));
while(!Q.empty())
{
int nod=Q.top().second;
int dist=-Q.top().first;
Q.pop();
if(cost[nod]==-1)
{
cost[nod]=dist;
for(int i=0;i<v[nod].size();i++)
Q.push(make_pair(-dist-v[nod][i].second,v[nod][i].first));
}
}
for(int i=2;i<=n;i++)
if(cost[i]==-1)
g<<0<<" ";
else
g<<cost[i]<<" ";
return 0;
}