Pagini recente » Cod sursa (job #1277075) | Cod sursa (job #1179067) | Cod sursa (job #2482786) | Cod sursa (job #2526585) | Cod sursa (job #3325455)
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector<vector<pair<int,int>>>LA;
const int inf=1e9+5;
vector<long long>dist(50001,inf);
vector<int>vis(50001,0);
int n,m,a,b,c;
int main()
{
f>>n>>m;
LA.resize(n+1);
for(int i=0;i<m;i++)
{
f>>a>>b>>c;
LA[a].push_back({b,c});
// LA[b].push_back({a,c});
}
int s=1;
dist[s]=0;
priority_queue<pair<long long, int>>pq;
pq.push({-dist[s],s});
while(!pq.empty())
{
int nod=pq.top().second;
pq.pop();
if(vis[nod])continue;
vis[nod]=1;
for(auto it:LA[nod])
{
int vecin=it.first;
int cost=it.second;
if(dist[nod]+cost<dist[vecin])
{
dist[vecin]=dist[nod]+cost;
pq.push({-dist[vecin],vecin});
}
}
}
for(int i=2;i<=n;i++)
{
if(dist[i]==inf)g<<0<<" ";
else g<<dist[i]<<" ";
}
return 0;
}