Pagini recente » Istoria paginii runda/asdf/clasament | Clasament blablabla | Concursul National de Soft Grigore Moisil Lugoj, Solutii | Istoria paginii runda/oni2009_z2 | Cod sursa (job #857569)
Cod sursa(job #857569)
#include<fstream>
#include<queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define nmax 50010
#define mmax 250010
int n,m,i,eq[nmax],d[nmax];
queue <int> q;
struct nod
{
int nr,cst;
nod *adr;
} *a[nmax];
void citire()
{
int x,y,cst;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>cst;
nod *p=new nod;
p->nr=y;
p->cst=cst;
p->adr=a[x];
a[x]=p;
}
}
void parcurgere(int x)
{
for(nod *p=a[x];p!=NULL;p=p->adr)
{
if(d[x]+p->cst<d[p->nr])
{
d[p->nr]=d[x]+p->cst;
if(eq[p->nr]==0)
{
q.push(p->nr);
eq[p->nr]=1;
}
}
}
eq[x]=0;
q.pop();
parcurgere(q.front());
}
int main()
{
citire();
for(i=2;i<=n;i++)
d[i]=500000;
q.push(1);
parcurgere(1);
for(i=2;i<=n;i++)
g<<d[i]<<' ';
return 0;
}