Pagini recente » Cod sursa (job #1719199) | Cod sursa (job #2809580) | Cod sursa (job #3037755) | Cod sursa (job #2696614) | Cod sursa (job #325645)
Cod sursa(job #325645)
#include <stdio.h>
#include <vector>
#define abs(x) ((x>0)?(x):(-(x)))
using namespace std;
#define NMAX 50001
vector<int> u,v,c;
long d[NMAX],m,n,inf;
FILE *f=fopen("dijkstra.in","r");
FILE *g=fopen("dijkstra.out","w");
void read()
{
long a,b,cs;
fscanf(f,"%ld %ld",&n,&m);
for(int i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&a,&b,&cs);
inf+=abs(cs);
u.push_back(a);
v.push_back(b);
c.push_back(cs);
}
}
void init()
{
d[1]=0;
for(int i=2;i<=n;i++)
{
d[i]=inf;
}
}
void solve()
{
init();
for(int i=2;i<=n;i++)
for(int j=0;j<m;j++)
{
if(v[j]==i&&(d[u[j]]+c[j]<d[i]))
{
d[i]=d[u[j]]+c[j];
}
}
}
void show()
{
for(int i=2;i<=n;i++)
fprintf(g,"%ld ",d[i]);
}
int main()
{
read();
solve();
show();
return 0;
}