Pagini recente » Cod sursa (job #2143217) | Cod sursa (job #2912765) | Cod sursa (job #416449) | Cod sursa (job #448308) | Cod sursa (job #2704162)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,dist[50005];
struct elem
{
int vecin,cost;
bool operator<(const elem &other)const
{
return cost>other.cost;
}
};
priority_queue<elem>pq;
vector<elem>g[50005];
void dijkstra(int start)
{
pq.push({1,0});
while(!pq.empty())
{
int nod=pq.top().vecin;
int distanta=pq.top().cost;
pq.pop();
if(dist[nod]==INT_MAX)
{
dist[nod]=distanta;
for(int i=0; i < g[nod].size(); i++)
{
if(dist[g[nod][i].vecin]==INT_MAX)
pq.push({ g[nod][i].vecin, distanta + g[nod][i].cost});
}
}
}
}
int main()
{
int x,y,nr;
fin>>n>>m;
for(int i=1; i <= n; i ++)
dist[i]=INT_MAX;
for(int i =1 ; i <=m ; i++)
{
fin>>x>>y>>nr;
g[x].push_back({y,nr});
}
dijkstra(1);
for(int i=2; i<=n; i++)
if(dist[i]==INT_MAX)
fout<<0<<" ";
else
fout<<dist[i]<<" ";
return 0;
}