Pagini recente » Cod sursa (job #2599826) | Cod sursa (job #310923) | Cod sursa (job #521459) | Cod sursa (job #1505411) | Cod sursa (job #679284)
Cod sursa(job #679284)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,j,n,m,col[50005],pi[50005],coada[50005],in=1,sf=0,acum,k,q;
struct nod{
int x,cost;
nod*urm;
}*Z[100],*p;
int main()
{
int a,b,c;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>a>>b>>c;
p = new nod;
p->x = a;
p->cost = c;
p->urm = Z[b];
Z[b] = p;
p=new nod;
p->x = b;
p->cost = c;
p->urm = Z[a];
Z[a] = p;
}
p = Z[1];
pi[1]=0;
col[1]=2;
while(p)
{
k = p->x;
pi[p->x] = p->cost;
coada[++sf] = p->x;
col[p->x]=1;
p=p->urm;
}
while(in<=sf)
{
acum = coada[in];
p = Z[acum];
while(p)
{
q=p->x;
if(col[p->x]==0)
{
coada[++sf] = p->x;
pi[p->x] = pi[acum] + p->cost;
col[p->x]=1;
}
else
if(col[p->x]==1 && pi[p->x] > pi[acum] + p->cost)
pi[p->x] = pi[acum] + p->cost;
p=p->urm;
}
col[acum]=2;
in++;
}
for(i=2;i<=n;i++)
g<<pi[i]<<' ';
f.close();
g.close();
return 0;
}