Pagini recente » Cod sursa (job #1012589) | Cod sursa (job #2400444) | Cod sursa (job #791368) | Cod sursa (job #2331709) | Cod sursa (job #893658)
Cod sursa(job #893658)
#include<fstream>
#include<queue>
using namespace std;
struct nod{int info,c;nod*adr;}*v[50003],*p;
int n,m,x,y,c,i,viz[50002],dist[50002];
queue< pair<int,int> > Q;
void dijkstra_coada(int nd)
{int d;
Q.push(make_pair(nd,0) );
viz[nd]=1;
while(!Q.empty())
{
p=v[Q.front().first];
d=Q.front().second;
Q.pop();
while(p)
{
if( !viz[p->info] || d + p->c < dist[p->info] )
{
dist[p->info] = d + p->c;
Q.push( make_pair(p->info, dist[p->info]) );
viz[p->info]=1;
}
p=p->adr;
}
}
}
int main()
{
ifstream f("dijkstra.in");ofstream g("dijkstra.out");
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
p=new nod;
p->info=y; p->c=c; p->adr=v[x]; v[x]=p;
p=new nod;
p->info=x; p->c=x; p->adr=v[y]; v[y]=p;
}
dijkstra_coada(1);
for(i=2;i<=n;i++)
g<<dist[i]<<" ";
f.close();g.close();
return 0;
}