Pagini recente » Cod sursa (job #1389812) | Cod sursa (job #1921866) | Cod sursa (job #1284363) | Cod sursa (job #1265935) | Cod sursa (job #3005569)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
vector<pair<int,int>> a[50010];
int v[50010],s;
queue<int> q;
void parcurgere()
{
int d,s,f;
while(!q.empty()){
d = q.front();
q.pop();
for(auto b:a[d]){
s = b.second;
f = b.first;
if(v[f]==0){
q.push(f);
v[f] = v[d] + s;
}
if(v[f]>v[d] + s){
q.push(f);
v[f] = v[d] + s;
}
}
}
}
int main()
{
int i,j,n,m,x,y,z;
in>>n>>s;
while(in>>x>>y>>z)
a[x].push_back(make_pair(y,z));
for(i=1;i<=n;i++){
sort(a[i].begin(),a[i].end());
}
memset(v,0,sizeof(v));
q.push(s);
parcurgere();
for(int i = 1; i <= n; i++){
if(i==1)
continue;
out << v[i] << ' ';
}
}