Pagini recente » Statistici Petrica Galan (petricagalan) | Cod sursa (job #1944869) | Cod sursa (job #1580958) | Cod sursa (job #2092205) | Cod sursa (job #2632090)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define INF 10000000000
bool viz[50001],p,n,m;
long d[50001];
typedef pair <long,int > pi;
vector <pi> G[50001];
priority_queue <pi, vector<pi>, greater<pi>> Q;
void init()
{
int i;
for(i=1;i<=n;i++)
d[i]=INF;
d[1]=0;
}
void read()
{int a,b,c,i;
f>>n>>m;
while(f>>a>>b>>c)
{
G[a].push_back(make_pair(c,b));
}
}
void Dijkstra ()
{
int i,j,vert,dist,v;
while(!Q.empty())
{
if(viz[Q.top().second]) Q.pop();
else{
vert=Q.top().second;
Q.pop();
viz[vert]=1;
for(j=0;j<G[vert].size();j++)
{
v=G[vert][j].second;
dist=G[vert][j].first;
if(dist+d[vert]<d[v] )
{
Q.push(make_pair(dist+d[vert],v));
d[v]=dist+d[vert];
}
}
}
}
}
int main()
{int i,j;
p=1;
read();
Q.push(make_pair(0,p));
init();
Dijkstra();
for(int i=2;i<=n;i++)
if(d[i]!=INF) g<<d[i]<<" ";
else g<<0<<" ";
}