Pagini recente » Cod sursa (job #1086799) | Cod sursa (job #3212413) | Istoria paginii runda/bazat | Cod sursa (job #2147342) | Cod sursa (job #2945550)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define M 50004
struct mu {
int v; int c;
bool operator<(const mu &z) const {
return c>z.c;
}
};
priority_queue <mu> q;
vector <mu> a[M];
int n,viz[M],d[M];
void Dijkstra(int start)
{ int i,x; mu z;
for(i=1;i<=n;i ++) d[i]=1001001001;
d[start]=0; z.v=start; z.c=0;
q.push(z);
while(!q.empty()) {
x=q.top().v;
q.pop();
if(viz[x]==0) {
viz[x]=1;
for(i=0;i<a[x].size();i++) {
z=a[x][i];
if(d[z.v]>d[x]+z.c) {
d[z.v]=d[x]+z.c;
q.push(z);
}
}
}
}
}
int main()
{ ifstream fin("dijkstra.in"); ofstream fout("dijkstra.out");
int i,m,x; mu z;
fin>>n>>m;
for(i=1;i<=m;i++) {
fin>>x>>z.v>>z.c;
a[x].push_back(z);
}
Dijkstra(1);
for(i=2;i<=n;i ++)
fout<<(d[i]<1001001001?d[i]:0)<<' ';
return 0;
}