Pagini recente » Cod sursa (job #1082563) | Cod sursa (job #1427370) | Cod sursa (job #2890630) | Cod sursa (job #1427369) | Cod sursa (job #212639)
Cod sursa(job #212639)
#include <cstdio>
#include <fstream>
#include <queue>
#define MAX_N 50001
using namespace std;
struct nod {int n, cost;};
vector <nod> V[MAX_N];
queue <int> Q;
int viz[MAX_N];
int N,M,D[MAX_N];
void citire()
{
int x,y,z;
//fin>>N>>M;
scanf("%d %d",&N,&M);
for(int i = 1; i <= M; ++i)
{
//fin>>x>>y>>z;
scanf("%d %d %d",&x,&y,&z);
nod t;
t.n = y;
t.cost = z;
V[x].push_back(t);
}
}
void solve()
{
memset(D, 0x3f3f3f, sizeof D);
Q.push(1);
D[1] = 0;
viz[1] = 1;
while(!Q.empty())
{
int nod = Q.front();
Q.pop();
viz[nod] = 0;
for(typeof V[nod].begin() p = V[nod].begin(); p < V[nod].end(); p++)
if(D[p->n]>D[nod]+p->cost)
{
D[p->n]=D[nod]+p->cost;
if(viz[p->n]==0)
{
Q.push(p->n);
viz[p->n]=1;
}
}
}
}
void afisare()
{
for(int i = 2; i <= N; ++i)
printf("%d ",(D[i]>0x3f3f3f?0:D[i]));
// fout<<(D[i]>0x3f3f3f?0:D[i])<<" ";
//fout<<"\n";
printf("\n");
}
int main()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
citire();
solve();
afisare();
}