Pagini recente » Cod sursa (job #30098) | Cod sursa (job #1035528) | Cod sursa (job #2779810) | Cod sursa (job #906896) | Cod sursa (job #727574)
Cod sursa(job #727574)
#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>, vector< pair<int,int> >,greater<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;
coada.pop();
if(viz[aux])
continue;
viz[aux]=true;
cost[aux]=costaux;
for(i=0;i<muchii[aux].size();++i){
coada.push(mp(muchii[aux][i].first+costaux,muchii[aux][i].second));
}
}
for(i=2;i<=n;++i){
out<<cost[i]<<" ";
}
}
int main(){
read();
solve();
return 0;
}