Pagini recente » Cod sursa (job #1252646) | Cod sursa (job #1246491) | Cod sursa (job #2686420) | Cod sursa (job #1702687) | Cod sursa (job #2300746)
#include <bits/stdc++.h>
#define Dim 50004
#define oo 5000000008
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector < pair < long,long > > V[Dim];
long N,M,a,b,c,D[Dim];
bool viz[Dim];
struct tester
{
bool operator () (int x,int y)
{
return D[x]>D[y];
}
};
priority_queue < long, vector < long >, tester > min_heap;
void Dijkstra()
{
for(int i=2;i<=N;i++) D[i]=oo;
min_heap.push(1);
viz[1]=1;
while(!min_heap.empty())
{
int nod=min_heap.top();
min_heap.pop();
viz[nod]=1;
for(int i=0;i<V[nod].size();i++)
{
long vecin=V[nod][i].first;
long cost=V[nod][i].second;
if(D[nod]+cost<D[vecin])
{
D[vecin]=D[nod]+cost;
if(viz[vecin]==0)
{
viz[vecin]=1;
min_heap.push(vecin);
}
}
}
}
}
int main()
{
f>>N>>M;
for(int i=1;i<=M;i++)
{
f>>a>>b>>c;
V[a].push_back(make_pair(b,c));
}
Dijkstra();
for(int i=2;i<N;i++)
if(D[i]==oo) g<<0<<" ";
else g<<D[i]<<" ";
return 0;
}