Pagini recente » Cod sursa (job #1303947) | Cod sursa (job #1310039) | Cod sursa (job #31765) | Cod sursa (job #2034532) | Cod sursa (job #2117137)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct muchie
{
int nod,dist;
bool operator < (const muchie &altu)const
{
return dist>altu.dist;
}
};
vector <muchie> G[50100];
int n,m,d[50100],viz[50100];
void dijkstra()
{
for(int i=2;i<=n;i++)
d[i]=inf;
priority_queue <muchie> pq;
muchie nod;
nod.nod=1;
nod.dist=0;
pq.push(nod);
while(!pq.empty())
{
nod=pq.top();
pq.pop();
if(!viz[nod.nod])
{
viz[nod.nod]=1;
for(int i=0;i<G[nod.nod].size();i++)
if(!viz[G[nod.nod][i].nod] && d[G[nod.nod][i].nod]>G[nod.nod][i].dist+d[nod.nod] )
{
d[G[nod.nod][i].nod]=G[nod.nod][i].dist+d[nod.nod];
muchie nodd;
nodd.nod=G[nod.nod][i].nod;
nodd.dist=d[G[nod.nod][i].nod];
pq.push(nodd);
}
}
}
for(int i=2;i<=n;i++)
if(d[i]!=inf) g<<d[i]<<' ';
else g<<0<<' ';
}
int main()
{
f>>n>>m;
while(m--)
{
int a,b,c;
f>>a>>b>>c;
muchie nod;
nod.nod=b;
nod.dist=c;
G[a].push_back(nod);
}
dijkstra();
f.close();
g.close();
return 0;
}