Pagini recente » Cod sursa (job #2647061) | Cod sursa (job #3127493) | Cod sursa (job #775194) | Cod sursa (job #3038695) | Cod sursa (job #777822)
Cod sursa(job #777822)
#include <fstream>
#include <vector>
#include <deque>
#include <bitset>
#define NMAX 50020
#define INF 200000000
#define pb push_back
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
bitset<NMAX> inque;
struct muchie{
int nodul,costul;
};
muchie mm(int a,int b) {
muchie c;
c.nodul=a;c.costul=b;
return c;
}
int n,i,m,a,b,c;
vector <muchie> A[NMAX];
deque <int> D;
int cm[NMAX];
void push(int nod,int cost) {
if (cm[nod]<=cost) return;
cm[nod]=cost;
if (inque[nod]) return;
D.pb(nod);inque[nod]=1;
}
void afis() {
for (i=2;i<=n;i++) g << ( cm[i] < INF ? cm[i] : 0 )<< ' ';
return;
}
int main () {
f >> n >> m;
for (i=1;i<=m;i++) {
f >> a >> b >> c;
A[a].pb(mm(b,c));
}
for (i=1;i<=n;cm[i]=INF,i++);
cm[1]=0;
D.pb(1);inque[1]=1;
while (!D.empty()) {
int nod=D.front();D.pop_front();inque[nod]=0;
for (int j=0;j<A[nod].size();j++)
push(A[nod][j].nodul,cm[nod]+A[nod][j].costul);
}
afis();
f.close();g.close();
return 0;
}