Pagini recente » Cod sursa (job #513993) | Cod sursa (job #1751496) | Cod sursa (job #2249177) | Cod sursa (job #1191515) | Cod sursa (job #411458)
Cod sursa(job #411458)
#include <cstdio>
#include <cstring>
using namespace std;
#define file_in "dijkstra.in"
#define file_out "dijkstra.out"
#define Nmax 50100
int n,m,i,j;
int d[5*Nmax];
int x[5*Nmax];
int y[5*Nmax];
int c[5*Nmax];
char s[Nmax];
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d\n", &n, &m);
for (i=1;i<=m;++i)
{
//scanf("%d %d %d", &x[i], &y[i], &c[i]);
gets(s);
j=0;
int xx,yy,cc;
xx=yy=cc=0;
while(s[j]>='0' && s[j]<='9')
{
xx=xx*10+s[j]-'0';
j++;
}
x[i]=xx;
j++;
while(s[j]>='0' && s[j]<='9')
{
yy=yy*10+s[j]-'0';
j++;
}
y[i]=yy;
j++;
while(s[j]>='0' && s[j]<='9')
{
cc=cc*10+s[j]-'0';
j++;
}
c[i]=cc;
j++;
if (x[i]==1)
d[y[i]]=c[i];
}
for (i=2;i<=n;++i)
if (d[i]==0)
d[i]=0x3f3f3f3f;
int ok=1;
while(ok)
{
ok=0;
for (i=1;i<=m;++i)
if (d[y[i]]>d[x[i]]+c[i])
d[y[i]]=d[x[i]]+c[i],
ok=1;
}
for (i=2;i<=n;++i)
if (d[i]==0x3f3f3f3f)
printf("0 ");
else
printf("%d ", d[i]);
fclose(stdin);
fclose(stdout);
return 0;
}