Pagini recente » Cod sursa (job #2596802) | Cod sursa (job #1935002) | Cod sursa (job #2804786) | Cod sursa (job #1585606) | Cod sursa (job #3214253)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector < pair<int , int> > l[1000001];
queue <int> q;
int n;
int viz[100001],cost[100001]={0};
void dijkstra(){
q.push(1);
viz[q.front()]=1;
while(!q.empty()){
int a=q.front();
q.pop();
for(int i=0;i<l[a].size();i++){
if(viz[l[a][i].first]==0){
cost[l[a][i].first]=cost[a]+l[a][i].second;
viz[l[a][i].first]=1;
q.push(l[a][i].first);
}
else
if(viz[l[a][i].first]==1&&cost[l[a][i].first]>cost[a]+l[a][i].second)
cost[l[a][i].first]=cost[a]+l[a][i].second;
/*if(viz[l[a][i].first]==0||cost[l[a][i-1].first]+l[a][i].second<cost[l[a][i].first]){
cost[l[a][i].first]=cost[l[a][i-1].first]+l[a][i].second;
q.push(l[a][i].first);
viz[q.front()]=1;
}*/
}
}
}
int main() {
int m;
fin>>n>>m;
int x,y,z;
for(int i=1;i<=m;i++){
fin>>x>>y>>z;
l[x].push_back({y,z});
l[y].push_back({x,z});
}
dijkstra();
for(int i=2;i<=n;i++){
fout<<cost[i]<<" ";
}
return 0;
}