Pagini recente » Diferente pentru arhiva intre reviziile 12 si 11 | Cod sursa (job #3289940) | Cod sursa (job #2707515) | Cod sursa (job #385364) | Cod sursa (job #3286764)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream g("dijkstra.out");
/// graf orientat cu costuri
vector < pair < int , int > > v[100005];
int n,m;
int x;
int dist[100005];
queue < int > q;
void dijk(int i)
{
fill(dist+1, dist+n+1, INT_MAX);
dist[i]=0;
q.push(i);
while(!q.empty())
{
int nod=q.front();
int distance=dist[nod];
for(auto edge:v[nod])
if(dist[edge.first]>distance+edge.second)
{
dist[edge.first]=distance+edge.second;
q.push(edge.first);
}
q.pop();
}
}
int main()
{
fin >> n >> m;
for (int i=1;i<=m;i++) {
int x,y,c;
fin >> x >> y >> c;
v[x].push_back({y, c});
}
dijk(1);
for(int i=2;i<=n;i++)
g<<dist[i]<<" ";
return 0;
}