Pagini recente » Cod sursa (job #2948672) | Cod sursa (job #1217654) | Cod sursa (job #633077) | Cod sursa (job #1318037) | Cod sursa (job #1924201)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct mstr{
int nxt,wgt;
};
vector<mstr>v1[10000];
int dist[10000];
bool vf[10000];
void solve(int curr){
priority_queue<pair<int,int> >pq;
dist[curr] = 0;
pq.push(make_pair(0,curr));
while(pq.size()!=0){
curr = pq.top().second;
pq.pop();
vf[curr] = 1;
for(int i=0;i<v1[curr].size();i++){
if((dist[v1[curr][i].nxt] > dist[curr]+v1[curr][i].wgt || dist[v1[curr][i].nxt]==0) && vf[v1[curr][i].nxt]==0){
dist[v1[curr][i].nxt] = dist[curr]+v1[curr][i].wgt;
pq.push(make_pair(-dist[v1[curr][i].nxt] ,v1[curr][i].nxt));
}
}
}
}
int main()
{
int n,m,a,b,wgt;
fin>>n>>m;
for(int i=0;i<m;i++){
fin>>a>>b>>wgt;
mstr aux;
aux.nxt = b;
aux.wgt = wgt;
v1[a].push_back(aux);
aux.nxt = a;
v1[b].push_back(aux);
}
solve(1);
for(int i=2;i<=n;i++)
fout<<dist[i]<<' ';
return 0;
}