Pagini recente » Cod sursa (job #1821614) | Cod sursa (job #157482) | Cod sursa (job #381637) | Cod sursa (job #274643) | Cod sursa (job #950156)
Cod sursa(job #950156)
#include <iostream>
#include <fstream>
# define NMAX 50002
# define MMAX 250002
# define INF 1<<30
using namespace std;
ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");
struct muchie{
int m1, m2, c;
} graf[NMAX];
int cost[NMAX], N, M;
void read()
{
int i;
in>>N>>M;
for(i = 1; i <= M; i++)
{
in>>graf[i].m1>>graf[i].m2>>graf[i].c;
if(graf[i].m1 == 1)
cost[graf[i].m2] = graf[i].c;
}
}
void Dijkstra()
{
int i, ok;
for(i = 2; i <= N; i++)
if(cost[i] == 0)
cost[i] = INF;
do{
ok = 1;
for(i = 1; i <= M; i++)
{
if(cost[graf[i].m2] > cost[graf[i].m1] + graf[i].c)
{
cost[graf[i].m2] = cost[graf[i].m1] + graf[i].c;
ok = 0;
}
}
} while (!ok);
}
void print()
{
int i;
for(i = 2; i <= M; i++)
if(cost[i] != INF)
out<<cost[i]<<" ";
else
out<<"0 ";
}
int main()
{
read();
Dijkstra();
print();
return 0;
}