Pagini recente » Cod sursa (job #1067124) | Cod sursa (job #717655) | Cod sursa (job #1525438) | Cod sursa (job #1810261) | Cod sursa (job #2476395)
#include<cstdio>
#include<vector>
#include<set>
#define INF 1<<24
#define x first
#define y second
using namespace std;
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m;
scanf("%d%d", &n, &m);
vector <vector <pair<int, int> > > G(n+1);
vector <int> d(n+1, INF);
set <pair <int, int> > q;
for(int i=1;i<=m;i++){
int x,y,c;
scanf("%d%d%d", &x, &y, &c);
G[x].push_back(make_pair(c, y));
}
d[1]=0;
q.insert(make_pair(0, 1));
while(!q.empty()){
int nod=(*q.begin()).y;
q.erase(q.begin());
for(auto j: G[nod]){
if(d[nod]+j.x<d[j.y]){
q.erase(make_pair(d[j.y], j.y));
d[j.y]=d[nod]+j.x;
q.insert(make_pair(d[j.y], j.y));
}
}
}
for(int i=2;i<=n;i++){
if(d[i]==INF)
printf("0 ");
else
printf("%d ", d[i]);
}
return 0;
}