Pagini recente » Cod sursa (job #756260) | Cod sursa (job #3272750) | Cod sursa (job #708195) | Cod sursa (job #1092098) | Cod sursa (job #587209)
Cod sursa(job #587209)
#include <fstream.h>
#include <stdio.h>
#include <vector.h>
#define r 50001
#define INF 2000000000
ifstream fin("dijkstra.in");
FILE *g=fopen ("dijkstra.out", "w");
struct nod { int x,c; } t;
vector <nod> v[r];
int s[r],c[r],n,m,i;
int minim(int a, int b)
{
return (a<b) ? a : b;
}
void citire() {
int i,x,y;
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>x>>y>>t.c;
t.x=y; v[x].push_back(t);
t.x=x; v[y].push_back(t);
}
for (i=2;i<=n;i++)
c[i]=INF;
}
void dijkstra() {
int i,j,min,pmin,m;
for (i=1;i<=n;i++)
{
min=INF;
for (j=1;j<=n;j++)
if (min>c[j] && !s[j])
{
min=c[j]; pmin=j;
}
s[pmin]=1;
m=v[pmin].size()-1;
for (j=0;j<=m;j++)
if (!s[v[pmin][j].x])
c[v[pmin][j].x]=minim(c[v[pmin][j].x], c[pmin]+v[pmin][j].c);
}
}
int main() {
citire();
dijkstra();
for (i=2;i<=n;i++)
fprintf (g, "%d ", (c[i]==INF) ? 0 : c[i]);
return 0;
}