Pagini recente » Cod sursa (job #2368469) | Cod sursa (job #2568056) | Cod sursa (job #152632) | Cod sursa (job #709549) | Cod sursa (job #3256043)
#include <fstream>
#include <queue>
#include <algorithm>
#include <vector>
#define nmax 60000
#define inf 2000000001
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
struct abc
{
int ind;
int cost;
bool operator < (const abc &aux) const
{
return (aux.cost<cost);
}
};
vector<abc> gf[nmax];
int n, m ,x ,y, c, dp[nmax];
priority_queue<abc> pq;
bool viz[nmax];
void bfs(int start)
{
for(int i=1; i<=n; i++)
dp[i]=inf;
dp[start]=0;
pq.push({start,0});
while(!pq.empty())
{
int nod=pq.top().ind;
pq.pop();
if(viz[nod])
continue;
viz[nod]=1;
for(auto x : gf[nod])
{
int nnod=x.ind;
int ccost=x.cost;
if(dp[nnod]>dp[nod]+ccost)
{
dp[nnod]=dp[nod]+ccost;
pq.push({nnod,dp[nnod]});
}
}
}
}
//void roy_floyd(int n, int &dp[][10000])
//{
// for(int k=1; k<=n; k++)
// {
// for(int i=1; i<=n; i++)
// {
// for(int j=1; j<=n; j++)
// {
// if(i!=j && a[i][j]>a[i][k]+a[k][j])
// {
// a[i][j]=a[i][k]+a[k][j];
// }
// }
// }
// }
//}
int main()
{
cin>>n>>m;
while(m--)
{
cin>>x>>y>>c;
gf[x].push_back({y,c});
}
bfs(1);
for(int i=2; i<=n; i++)
{
if(dp[i]!=inf)
cout<<dp[i]<<' ';
else
cout<<0<<' ';
}
return 0;
}