Pagini recente » Cod sursa (job #1252892) | Cod sursa (job #1961962) | Cod sursa (job #1109581) | Cod sursa (job #851112) | Cod sursa (job #1722607)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,c,x,y;
const int NMAX=50003;
const int INF=1e9;
struct Pct{
int cost,nod;
};
struct cmp{
inline bool operator ()(const Pct A,const Pct B)
{
return A.cost>B.cost;
}
};
priority_queue < Pct,vector <Pct> , cmp > Q;
vector <int> G[NMAX],C[NMAX];
int dp[NMAX];
inline void Dijkstra()
{
int nod;
Pct a,b;
a.cost=0,a.nod=1;
Q.push(a);
while(!Q.empty())
{
a=Q.top();
nod=a.nod;
Q.pop();
for(int i=0;i<G[nod].size();i++)
{
int cost=dp[nod]+C[nod][i];
if(dp[G[nod][i]]>cost)
{
dp[G[nod][i]]=cost;
b.nod=G[nod][i];
b.cost=cost;
Q.push(b);
}
}
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>x>>y>>c;
G[x].push_back(y);
C[x].push_back(c);
}
for(int i=2;i<=n;i++)
dp[i]=INF;
Dijkstra();
for(int i=2;i<=n;i++)
if(dp[i])
g<<dp[i]<<" ";
else
g<<"0 ";
g<<"\n";
return 0;
}