Pagini recente » Cod sursa (job #631225) | Cod sursa (job #1012118) | Cod sursa (job #2773997) | Cod sursa (job #2116930) | Cod sursa (job #727141)
Cod sursa(job #727141)
#include <fstream>
#include <queue>
#include <vector>
#define mp make_pair
#define pb push_back
using namespace std;
const int N=50100;
const int INF=1<<30;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
bool viz[N];
vector < pair<int,int> > muchii[N];
priority_queue < pair<int,int> > coada;
int cost[N];
int n,m;
void read(){
int x,y,c,i;
in>>n>>m;
for(i=1;i<=m;++i){
in>>x>>y>>c;
muchii[x].pb(mp(c,y));
muchii[y].pb(mp(c,x));
}
for(i=2;i<=n;++i)
cost[i]=INF;
}
void solve(){
int i,aux,costaux;
pair <int,int> auxp;
coada.push(mp(0,1));
while(coada.empty()==false){
auxp=coada.top();
aux=auxp.second;
costaux=auxp.first;
cost[aux]=costaux;
coada.pop();
if(viz[aux])
continue;
viz[aux]=true;
for(i=0;i<muchii[aux].size();++i){
if(costaux+muchii[aux][i].first<cost[muchii[aux][i].second]){
cost[muchii[aux][i].second]=costaux+muchii[aux][i].first;
coada.push(mp(cost[muchii[aux][i].second],muchii[aux][i].second));
}
}
}
for(i=2;i<=n;++i){
out<<cost[i]<<" ";
}
}
int main(){
read();
solve();
return 0;
}