Pagini recente » Cod sursa (job #1480501) | Cod sursa (job #1362894) | Cod sursa (job #3186360) | Borderou de evaluare (job #1796799) | Cod sursa (job #861221)
Cod sursa(job #861221)
#include<iostream>
#include<cstdio>
#define nmax 50050
#define mmax 250050
#define INFINIT 0x3f3f3f
using namespace std;
FILE *f=fopen("dijkstra.in","r"),*g=fopen("dijkstra.out","w");
struct muchie
{
int inc,sf;
short int cost;
};
muchie M[mmax];
int Cost[nmax];
int n,m;
void read()
{
fscanf(f,"%d %d",&n,&m);
for(int i=1;i<=m;i++)
fscanf(f,"%d %d %hd",&M[i].inc,&M[i].sf,&M[i].cost);
}
void solve()
{ bool q=1;
for(int i=2;i<=n;i++)
Cost[i]=INFINIT;
for(int i=1;i<=n && q;i++)
{
q=0;
for(int j=1;j<=m;j++)
if(Cost[M[j].inc]+M[j].cost<Cost[M[j].sf])
{
Cost[M[j].sf]=Cost[M[j].inc]+M[j].cost;
q=1;
}
}
}
void show()
{
for(int i=2;i<=n;i++)
fprintf(g,"%d ",Cost[i]);
}
int main()
{
read();
solve();
show();
fclose(f);
fclose(g);
return 0;
}